@etherisc/gif-next 0.0.2-00080dc-272
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/LICENSE +202 -0
- package/README.md +495 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +665 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +769 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +4 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.json +965 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1701 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1220 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +758 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
- 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/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.json +10 -0
- 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 +4 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.json +10 -0
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -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 +1146 -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/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +400 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +784 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +906 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1123 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +4 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.json +1230 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +187 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1234 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +110 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +131 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +181 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
- 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 +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +570 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +156 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +187 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2260 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- 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 +4 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
- 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 +4 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
- 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 +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
- package/contracts/distribution/Distribution.sol +261 -0
- package/contracts/distribution/DistributionService.sol +297 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +87 -0
- package/contracts/instance/IInstanceService.sol +97 -0
- package/contracts/instance/Instance.sol +263 -0
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
- package/contracts/instance/InstanceReader.sol +392 -0
- package/contracts/instance/InstanceService.sol +439 -0
- package/contracts/instance/InstanceServiceManager.sol +44 -0
- package/contracts/instance/InstanceStore.sol +272 -0
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +28 -0
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +96 -0
- package/contracts/instance/base/ObjectManager.sol +80 -0
- package/contracts/instance/module/IAccess.sol +46 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +42 -0
- package/contracts/instance/module/IPolicy.sol +84 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/IOracle.sol +20 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +145 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +452 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +99 -0
- package/contracts/product/IPolicyService.sol +78 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +300 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +217 -0
- package/contracts/registry/IRegistry.sol +124 -0
- package/contracts/registry/IRegistryService.sol +69 -0
- package/contracts/registry/IServiceAuthorization.sol +38 -0
- package/contracts/registry/ITransferInterceptor.sol +7 -0
- package/contracts/registry/Registry.sol +582 -0
- package/contracts/registry/RegistryAdmin.sol +333 -0
- package/contracts/registry/RegistryService.sol +266 -0
- package/contracts/registry/RegistryServiceManager.sol +53 -0
- package/contracts/registry/ReleaseLifecycle.sol +28 -0
- package/contracts/registry/ReleaseManager.sol +523 -0
- package/contracts/registry/ServiceAuthorization.sol +90 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +315 -0
- package/contracts/shared/AccessAdmin.sol +759 -0
- package/contracts/shared/AccessManagerCustom.sol +741 -0
- package/contracts/shared/AccessManagerExtended.sol +481 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +281 -0
- package/contracts/shared/ComponentService.sol +620 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +27 -0
- package/contracts/shared/IAccessAdmin.sol +168 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/shared/IKeyValueStore.sol +54 -0
- package/contracts/shared/ILifecycle.sol +29 -0
- package/contracts/shared/INftOwnable.sol +23 -0
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +15 -0
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +25 -0
- package/contracts/shared/IVersionable.sol +53 -0
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +131 -0
- package/contracts/shared/Lifecycle.sol +71 -0
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +107 -0
- package/contracts/shared/PolicyHolder.sol +102 -0
- package/contracts/shared/ProxyManager.sol +199 -0
- package/contracts/shared/Registerable.sol +75 -0
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +83 -0
- package/contracts/shared/TokenHandler.sol +58 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
- package/contracts/shared/Versionable.sol +59 -0
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +153 -0
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +513 -0
- package/contracts/staking/StakingLifecycle.sol +24 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +411 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +615 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/type/AddressSet.sol +58 -0
- package/contracts/type/Amount.sol +128 -0
- package/contracts/type/Blocknumber.sol +136 -0
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/type/DistributorType.sol +55 -0
- package/contracts/type/Fee.sol +66 -0
- package/contracts/type/Key32.sol +50 -0
- package/contracts/type/NftId.sol +78 -0
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/type/ObjectType.sol +241 -0
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/type/Referral.sol +89 -0
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +43 -0
- package/contracts/type/RoleId.sol +201 -0
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +135 -0
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +136 -0
- package/contracts/type/UFixed.sol +326 -0
- package/contracts/type/Version.sol +108 -0
- package/package.json +55 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import {AccessAdmin} from "../shared/AccessAdmin.sol";
|
|
5
|
+
import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
|
|
6
|
+
import {IRegistry} from "./IRegistry.sol";
|
|
7
|
+
import {IService} from "../shared/IService.sol";
|
|
8
|
+
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
|
9
|
+
import {IStaking} from "../staking/IStaking.sol";
|
|
10
|
+
import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
|
|
11
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
|
12
|
+
import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
|
13
|
+
import {StakingStore} from "../staking/StakingStore.sol";
|
|
14
|
+
import {STAKING} from "../type/ObjectType.sol";
|
|
15
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
|
16
|
+
import {VersionPart} from "../type/Version.sol";
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
1) GIF_MANAGER_ROLE
|
|
20
|
+
- can have arbitrary number of members
|
|
21
|
+
- responsible for services registrations
|
|
22
|
+
- responsible for token registration and activation
|
|
23
|
+
|
|
24
|
+
2) GIF_ADMIN_ROLE
|
|
25
|
+
- admin of GIF_MANAGER_ROLE
|
|
26
|
+
- MUST have 1 member at any time
|
|
27
|
+
- granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
|
|
28
|
+
- responsible for creation and activation of releases
|
|
29
|
+
|
|
30
|
+
createServiceTarget(type, release)
|
|
31
|
+
createServiceRole(type,release)
|
|
32
|
+
getServiceRole(type, release)
|
|
33
|
+
*/
|
|
34
|
+
contract RegistryAdmin is
|
|
35
|
+
AccessAdmin
|
|
36
|
+
{
|
|
37
|
+
error ErrorRegistryAdminIsAlreadySetUp();
|
|
38
|
+
|
|
39
|
+
string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
|
|
40
|
+
string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
|
|
41
|
+
string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
|
|
42
|
+
string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
|
|
43
|
+
|
|
44
|
+
string public constant RELEASE_MANAGER_TARGET_NAME = "ReleaseManagerTarget";
|
|
45
|
+
string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistryTarget";
|
|
46
|
+
string public constant STAKING_TARGET_NAME = "StakingTarget";
|
|
47
|
+
string public constant STAKING_STORE_TARGET_NAME = "StakingStoreTarget";
|
|
48
|
+
|
|
49
|
+
mapping(address service => VersionPart majorVersion) private _ServiceRelease;
|
|
50
|
+
|
|
51
|
+
address private _releaseManager;
|
|
52
|
+
address private _tokenRegistry;
|
|
53
|
+
address private _staking;
|
|
54
|
+
address private _stakingStore;
|
|
55
|
+
bool private _setupCompleted;
|
|
56
|
+
|
|
57
|
+
constructor() AccessAdmin() { }
|
|
58
|
+
|
|
59
|
+
function completeSetup(
|
|
60
|
+
IRegistry registry,
|
|
61
|
+
address gifAdmin,
|
|
62
|
+
address gifManager
|
|
63
|
+
)
|
|
64
|
+
external
|
|
65
|
+
onlyDeployer()
|
|
66
|
+
{
|
|
67
|
+
if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); }
|
|
68
|
+
else { _setupCompleted = true; }
|
|
69
|
+
|
|
70
|
+
_releaseManager = registry.getReleaseManagerAddress();
|
|
71
|
+
_tokenRegistry = registry.getTokenRegistryAddress();
|
|
72
|
+
_staking = registry.getStakingAddress();
|
|
73
|
+
_stakingStore = address(
|
|
74
|
+
IStaking(_staking).getStakingStore());
|
|
75
|
+
|
|
76
|
+
// at this moment all registry contracts are deployed and fully intialized
|
|
77
|
+
_createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME);
|
|
78
|
+
|
|
79
|
+
_setupGifAdminRole(gifAdmin);
|
|
80
|
+
_setupGifManagerRole(gifManager);
|
|
81
|
+
|
|
82
|
+
_setupReleaseManager();
|
|
83
|
+
_setupStaking();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
/// @dev Sets up authorizaion for specified service.
|
|
88
|
+
/// For all authorized services its authorized functions are enabled.
|
|
89
|
+
/// Permissioned function: Access is restricted to release manager.
|
|
90
|
+
function authorizeService(
|
|
91
|
+
IServiceAuthorization serviceAuthorization,
|
|
92
|
+
IService service
|
|
93
|
+
)
|
|
94
|
+
external
|
|
95
|
+
restricted()
|
|
96
|
+
{
|
|
97
|
+
_createServiceTargetAndRole(service);
|
|
98
|
+
_authorizeServiceFunctions(serviceAuthorization, service);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
function grantServiceRoleForAllVersions(IService service, ObjectType domain)
|
|
103
|
+
external
|
|
104
|
+
restricted()
|
|
105
|
+
{
|
|
106
|
+
_grantRoleToAccount(
|
|
107
|
+
RoleIdLib.roleForTypeAndAllVersions(domain),
|
|
108
|
+
address(service));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
function _createServiceTargetAndRole(IService service)
|
|
113
|
+
private
|
|
114
|
+
{
|
|
115
|
+
ObjectType domain = service.getDomain();
|
|
116
|
+
string memory baseName = ObjectTypeLib.toName(domain);
|
|
117
|
+
VersionPart version = service.getVersion().toMajorPart();
|
|
118
|
+
uint256 versionInt = version.toInt();
|
|
119
|
+
string memory versionName = "_v0";
|
|
120
|
+
string memory versionNumber = ObjectTypeLib.toString(versionInt);
|
|
121
|
+
|
|
122
|
+
if (versionInt >= 10) {
|
|
123
|
+
versionName = "_v";
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// create service target
|
|
127
|
+
string memory serviceTargetName = string(
|
|
128
|
+
abi.encodePacked(
|
|
129
|
+
baseName,
|
|
130
|
+
"Service",
|
|
131
|
+
versionName,
|
|
132
|
+
versionNumber));
|
|
133
|
+
|
|
134
|
+
_createTarget(
|
|
135
|
+
address(service),
|
|
136
|
+
serviceTargetName);
|
|
137
|
+
|
|
138
|
+
// create service role
|
|
139
|
+
string memory serviceRoleName = string(
|
|
140
|
+
abi.encodePacked(
|
|
141
|
+
baseName,
|
|
142
|
+
"ServiceRole",
|
|
143
|
+
versionName,
|
|
144
|
+
versionNumber));
|
|
145
|
+
|
|
146
|
+
RoleId roleId = RoleIdLib.roleForTypeAndVersion(
|
|
147
|
+
domain,
|
|
148
|
+
version);
|
|
149
|
+
|
|
150
|
+
_createRole(
|
|
151
|
+
roleId,
|
|
152
|
+
ADMIN_ROLE(),
|
|
153
|
+
serviceRoleName,
|
|
154
|
+
1, // service roles must only be given to this unique service
|
|
155
|
+
true); // it must not be possible to remove this role once granted
|
|
156
|
+
|
|
157
|
+
_grantRoleToAccount(
|
|
158
|
+
roleId,
|
|
159
|
+
address(service));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
function _authorizeServiceFunctions(
|
|
164
|
+
IServiceAuthorization serviceAuthorization,
|
|
165
|
+
IService service
|
|
166
|
+
)
|
|
167
|
+
private
|
|
168
|
+
{
|
|
169
|
+
ObjectType serviceDomain = service.getDomain();
|
|
170
|
+
ObjectType authorizedDomain;
|
|
171
|
+
RoleId authorizedRoleId;
|
|
172
|
+
|
|
173
|
+
VersionPart release = service.getVersion().toMajorPart();
|
|
174
|
+
ObjectType[] memory authorizedDomains = serviceAuthorization.getAuthorizedDomains(serviceDomain);
|
|
175
|
+
|
|
176
|
+
for (uint256 i = 0; i < authorizedDomains.length; i++) {
|
|
177
|
+
authorizedDomain = authorizedDomains[i];
|
|
178
|
+
|
|
179
|
+
// derive authorized role from authorized domain
|
|
180
|
+
if (authorizedDomain == ALL()) {
|
|
181
|
+
authorizedRoleId = PUBLIC_ROLE();
|
|
182
|
+
} else {
|
|
183
|
+
authorizedRoleId = RoleIdLib.roleForTypeAndVersion(
|
|
184
|
+
authorizedDomain,
|
|
185
|
+
release);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// get authorized functions for authorized domain
|
|
189
|
+
IAccessAdmin.Function[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
|
|
190
|
+
serviceDomain,
|
|
191
|
+
authorizedDomain);
|
|
192
|
+
|
|
193
|
+
_authorizeTargetFunctions(
|
|
194
|
+
address(service),
|
|
195
|
+
authorizedRoleId,
|
|
196
|
+
authorizatedFunctions);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/*function transferAdmin(address to)
|
|
201
|
+
external
|
|
202
|
+
restricted // only with GIF_ADMIN_ROLE or nft owner
|
|
203
|
+
{
|
|
204
|
+
_accessManager.revoke(GIF_ADMIN_ROLE, );
|
|
205
|
+
_accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
|
|
206
|
+
}*/
|
|
207
|
+
|
|
208
|
+
//--- view functions ----------------------------------------------------//
|
|
209
|
+
|
|
210
|
+
function getGifAdminRole() external view returns (RoleId) {
|
|
211
|
+
return GIF_ADMIN_ROLE();
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function getGifManagerRole() external view returns (RoleId) {
|
|
215
|
+
return GIF_MANAGER_ROLE();
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
//--- private functions -------------------------------------------------//
|
|
219
|
+
|
|
220
|
+
function _setupGifAdminRole(address gifAdmin) private {
|
|
221
|
+
// TODO decide on max member count
|
|
222
|
+
_createRole(GIF_ADMIN_ROLE(), getAdminRole(), GIF_ADMIN_ROLE_NAME, 2, false);
|
|
223
|
+
_grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
|
|
224
|
+
|
|
225
|
+
// for ReleaseManager
|
|
226
|
+
Function[] memory functions;
|
|
227
|
+
functions = new Function[](2);
|
|
228
|
+
functions[0] = toFunction(ReleaseManager.createNextRelease.selector, "createNextRelease");
|
|
229
|
+
functions[1] = toFunction(ReleaseManager.activateNextRelease.selector, "activateNextRelease");
|
|
230
|
+
_authorizeTargetFunctions(_releaseManager, GIF_ADMIN_ROLE(), functions);
|
|
231
|
+
|
|
232
|
+
// for Staking
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function _setupGifManagerRole(address gifManager) private {
|
|
236
|
+
_createRole(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE(), GIF_MANAGER_ROLE_NAME, 1, false);
|
|
237
|
+
_grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
|
|
238
|
+
|
|
239
|
+
// for TokenRegistry
|
|
240
|
+
Function[] memory functions;
|
|
241
|
+
functions = new Function[](5);
|
|
242
|
+
functions[0] = toFunction(TokenRegistry.registerToken.selector, "registerToken");
|
|
243
|
+
functions[1] = toFunction(TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
|
|
244
|
+
functions[2] = toFunction(TokenRegistry.setActive.selector, "setActive");
|
|
245
|
+
functions[3] = toFunction(TokenRegistry.setActiveForVersion.selector, "setActiveForVersion");
|
|
246
|
+
// TODO find a better way (only needed for testing)
|
|
247
|
+
functions[4] = toFunction(TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
|
|
248
|
+
_authorizeTargetFunctions(_tokenRegistry, GIF_MANAGER_ROLE(), functions);
|
|
249
|
+
|
|
250
|
+
// for ReleaseManager
|
|
251
|
+
functions = new Function[](2);
|
|
252
|
+
functions[0] = toFunction(ReleaseManager.prepareNextRelease.selector, "prepareNextRelease");
|
|
253
|
+
functions[1] = toFunction(ReleaseManager.registerService.selector, "registerService");
|
|
254
|
+
_authorizeTargetFunctions(_releaseManager, GIF_MANAGER_ROLE(), functions);
|
|
255
|
+
|
|
256
|
+
// for Staking
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
function _setupReleaseManager() private {
|
|
261
|
+
_createTarget(_releaseManager, RELEASE_MANAGER_TARGET_NAME);
|
|
262
|
+
|
|
263
|
+
RoleId releaseManagerRoleId = RoleIdLib.roleForType(RELEASE());
|
|
264
|
+
_createRole(releaseManagerRoleId, ADMIN_ROLE(), RELEASE_MANAGER_TARGET_NAME, 1, true);
|
|
265
|
+
_grantRoleToAccount(releaseManagerRoleId, _releaseManager);
|
|
266
|
+
|
|
267
|
+
Function[] memory functions;
|
|
268
|
+
functions = new Function[](2);
|
|
269
|
+
functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
|
|
270
|
+
functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
|
|
271
|
+
_authorizeTargetFunctions(address(this), releaseManagerRoleId, functions);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
function _setupStaking() private {
|
|
276
|
+
_createTarget(_staking, STAKING_TARGET_NAME);
|
|
277
|
+
_createTarget(_stakingStore, STAKING_STORE_TARGET_NAME);
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
// staking function authorization for staking service
|
|
281
|
+
RoleId stakingServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(STAKING());
|
|
282
|
+
_createRole(stakingServiceRoleId, ADMIN_ROLE(), STAKING_SERVICE_ROLE_NAME, 1, true);
|
|
283
|
+
|
|
284
|
+
Function[] memory functions;
|
|
285
|
+
functions = new Function[](13);
|
|
286
|
+
functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
|
|
287
|
+
functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
|
|
288
|
+
functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
|
|
289
|
+
functions[3] = toFunction(IStaking.refillRewardReserves.selector, "refillRewardReserves");
|
|
290
|
+
functions[4] = toFunction(IStaking.withdrawRewardReserves.selector, "withdrawRewardReserves");
|
|
291
|
+
functions[5] = toFunction(IStaking.createStake.selector, "createStake");
|
|
292
|
+
functions[6] = toFunction(IStaking.stake.selector, "stake");
|
|
293
|
+
functions[7] = toFunction(IStaking.unstake.selector, "unstake");
|
|
294
|
+
functions[8] = toFunction(IStaking.restake.selector, "restake");
|
|
295
|
+
functions[9] = toFunction(IStaking.updateRewards.selector, "updateRewards");
|
|
296
|
+
functions[10] = toFunction(IStaking.claimRewards.selector, "claimRewards");
|
|
297
|
+
functions[11] = toFunction(IStaking.collectDipAmount.selector, "collectDipAmount");
|
|
298
|
+
functions[12] = toFunction(IStaking.transferDipAmount.selector, "transferDipAmount");
|
|
299
|
+
_authorizeTargetFunctions(_staking, stakingServiceRoleId, functions);
|
|
300
|
+
|
|
301
|
+
// staking function authorization for pool service
|
|
302
|
+
RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
|
|
303
|
+
_createRole(poolServiceRoleId, ADMIN_ROLE(), POOL_SERVICE_ROLE_NAME, 1, true);
|
|
304
|
+
|
|
305
|
+
// staking function authorizations
|
|
306
|
+
functions = new Function[](2);
|
|
307
|
+
functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
|
|
308
|
+
functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
|
|
309
|
+
_authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
|
|
310
|
+
|
|
311
|
+
// staking store function authorizations
|
|
312
|
+
RoleId stakingRoleId = RoleIdLib.roleForType(STAKING());
|
|
313
|
+
_createRole(stakingRoleId, ADMIN_ROLE(), STAKING_TARGET_NAME, 1, true);
|
|
314
|
+
_grantRoleToAccount(stakingRoleId, _staking);
|
|
315
|
+
|
|
316
|
+
functions = new Function[](14);
|
|
317
|
+
functions[0] = toFunction(StakingStore.setStakingRate.selector, "setStakingRate");
|
|
318
|
+
functions[1] = toFunction(StakingStore.createTarget.selector, "createTarget");
|
|
319
|
+
functions[2] = toFunction(StakingStore.updateTarget.selector, "updateTarget");
|
|
320
|
+
functions[3] = toFunction(StakingStore.increaseReserves.selector, "increaseReserves");
|
|
321
|
+
functions[4] = toFunction(StakingStore.decreaseReserves.selector, "decreaseReserves");
|
|
322
|
+
functions[5] = toFunction(StakingStore.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
|
|
323
|
+
functions[6] = toFunction(StakingStore.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
|
|
324
|
+
functions[7] = toFunction(StakingStore.create.selector, "create");
|
|
325
|
+
functions[8] = toFunction(StakingStore.update.selector, "update");
|
|
326
|
+
functions[9] = toFunction(StakingStore.increaseStake.selector, "increaseStake");
|
|
327
|
+
functions[10] = toFunction(StakingStore.restakeRewards.selector, "restakeRewards");
|
|
328
|
+
functions[11] = toFunction(StakingStore.updateRewards.selector, "updateRewards");
|
|
329
|
+
functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
|
|
330
|
+
functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
|
|
331
|
+
_authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
|
5
|
+
// import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
|
6
|
+
|
|
7
|
+
import {IRegistry} from "./IRegistry.sol";
|
|
8
|
+
import {IInstance} from "../instance/IInstance.sol";
|
|
9
|
+
|
|
10
|
+
import {IComponent} from "../../contracts/shared/IComponent.sol";
|
|
11
|
+
import {IPoolComponent} from "../../contracts/pool/IPoolComponent.sol";
|
|
12
|
+
import {IProductComponent} from "../../contracts/product/IProductComponent.sol";
|
|
13
|
+
import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
|
|
14
|
+
|
|
15
|
+
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
|
16
|
+
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
|
17
|
+
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
|
18
|
+
|
|
19
|
+
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
|
|
20
|
+
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE} from "../../contracts/type/ObjectType.sol";
|
|
21
|
+
import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
|
|
22
|
+
import {NftId, NftIdLib} from "../../contracts/type/NftId.sol";
|
|
23
|
+
import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
|
|
24
|
+
import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
|
|
25
|
+
|
|
26
|
+
import {Service} from "../shared/Service.sol";
|
|
27
|
+
import {IService} from "../shared/IService.sol";
|
|
28
|
+
import {IRegistryService} from "./IRegistryService.sol";
|
|
29
|
+
import {Registry} from "./Registry.sol";
|
|
30
|
+
|
|
31
|
+
contract RegistryService is
|
|
32
|
+
Service,
|
|
33
|
+
IRegistryService
|
|
34
|
+
{
|
|
35
|
+
using NftIdLib for NftId;
|
|
36
|
+
|
|
37
|
+
// TODO update to real hash when registry is stable
|
|
38
|
+
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
|
39
|
+
|
|
40
|
+
// from Versionable
|
|
41
|
+
|
|
42
|
+
/// @dev top level initializer
|
|
43
|
+
function _initialize(
|
|
44
|
+
address owner,
|
|
45
|
+
bytes memory data
|
|
46
|
+
)
|
|
47
|
+
internal
|
|
48
|
+
virtual override
|
|
49
|
+
initializer()
|
|
50
|
+
{
|
|
51
|
+
(
|
|
52
|
+
address registryAddress,
|
|
53
|
+
address initialAuthority
|
|
54
|
+
) = abi.decode(data, (address, address));
|
|
55
|
+
|
|
56
|
+
initializeService(registryAddress, initialAuthority, owner);
|
|
57
|
+
registerInterface(type(IRegistryService).interfaceId);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
function registerStaking(IRegisterable staking, address owner)
|
|
62
|
+
external
|
|
63
|
+
virtual
|
|
64
|
+
restricted()
|
|
65
|
+
returns(
|
|
66
|
+
IRegistry.ObjectInfo memory info
|
|
67
|
+
)
|
|
68
|
+
{
|
|
69
|
+
info = _getAndVerifyContractInfo(staking, STAKING(), owner);
|
|
70
|
+
info.nftId = getRegistry().register(info);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
function registerInstance(IRegisterable instance, address owner)
|
|
75
|
+
external
|
|
76
|
+
virtual
|
|
77
|
+
restricted
|
|
78
|
+
returns(
|
|
79
|
+
IRegistry.ObjectInfo memory info
|
|
80
|
+
)
|
|
81
|
+
{
|
|
82
|
+
if(!instance.supportsInterface(type(IInstance).interfaceId)) {
|
|
83
|
+
revert ErrorRegistryServiceNotInstance(address(instance));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
info = _getAndVerifyContractInfo(instance, INSTANCE(), owner);
|
|
87
|
+
info.nftId = getRegistry().register(info);
|
|
88
|
+
|
|
89
|
+
instance.linkToRegisteredNftId(); // asume safe
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function registerProduct(IComponent product, address owner)
|
|
93
|
+
external
|
|
94
|
+
restricted
|
|
95
|
+
returns(
|
|
96
|
+
IRegistry.ObjectInfo memory info
|
|
97
|
+
)
|
|
98
|
+
{
|
|
99
|
+
// CAN revert if no ERC165 support -> will revert with empty message
|
|
100
|
+
if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
|
|
101
|
+
revert ErrorRegistryServiceNotProduct(address(product));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
info = _getAndVerifyContractInfo(product, PRODUCT(), owner);
|
|
105
|
+
info.nftId = getRegistry().register(info);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function registerComponent(
|
|
109
|
+
IComponent component,
|
|
110
|
+
ObjectType objectType,
|
|
111
|
+
address initialOwner
|
|
112
|
+
)
|
|
113
|
+
external
|
|
114
|
+
restricted
|
|
115
|
+
returns(
|
|
116
|
+
IRegistry.ObjectInfo memory info
|
|
117
|
+
)
|
|
118
|
+
{
|
|
119
|
+
// CAN revert if no ERC165 support -> will revert with empty message
|
|
120
|
+
if(!component.supportsInterface(type(IComponent).interfaceId)) {
|
|
121
|
+
revert ErrorRegistryServiceNotComponent(address(component));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
info = _getAndVerifyContractInfo(component, objectType, initialOwner);
|
|
125
|
+
info.nftId = getRegistry().register(info);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function registerPool(IComponent pool, address owner)
|
|
129
|
+
external
|
|
130
|
+
restricted
|
|
131
|
+
returns(
|
|
132
|
+
IRegistry.ObjectInfo memory info
|
|
133
|
+
)
|
|
134
|
+
{
|
|
135
|
+
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
|
136
|
+
revert ErrorRegistryServiceNotPool(address(pool));
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
info = _getAndVerifyContractInfo(pool, POOL(), owner);
|
|
140
|
+
info.nftId = getRegistry().register(info);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function registerDistribution(IComponent distribution, address owner)
|
|
144
|
+
external
|
|
145
|
+
restricted
|
|
146
|
+
returns(
|
|
147
|
+
IRegistry.ObjectInfo memory info
|
|
148
|
+
)
|
|
149
|
+
{
|
|
150
|
+
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
|
151
|
+
revert ErrorRegistryServiceNotDistribution(address(distribution));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
info = _getAndVerifyContractInfo(distribution, DISTRIBUTION(), owner);
|
|
155
|
+
info.nftId = getRegistry().register(info);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function registerDistributor(IRegistry.ObjectInfo memory info)
|
|
159
|
+
external
|
|
160
|
+
restricted
|
|
161
|
+
returns(NftId nftId)
|
|
162
|
+
{
|
|
163
|
+
_verifyObjectInfo(info, DISTRIBUTOR());
|
|
164
|
+
nftId = getRegistry().register(info);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function registerPolicy(IRegistry.ObjectInfo memory info)
|
|
168
|
+
external
|
|
169
|
+
restricted
|
|
170
|
+
returns(NftId nftId)
|
|
171
|
+
{
|
|
172
|
+
_verifyObjectInfo(info, POLICY());
|
|
173
|
+
nftId = getRegistry().register(info);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function registerBundle(IRegistry.ObjectInfo memory info)
|
|
177
|
+
external
|
|
178
|
+
restricted
|
|
179
|
+
returns(NftId nftId)
|
|
180
|
+
{
|
|
181
|
+
_verifyObjectInfo(info, BUNDLE());
|
|
182
|
+
nftId = getRegistry().register(info);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function registerStake(IRegistry.ObjectInfo memory info)
|
|
186
|
+
external
|
|
187
|
+
restricted
|
|
188
|
+
returns(NftId nftId)
|
|
189
|
+
{
|
|
190
|
+
_verifyObjectInfo(info, STAKE());
|
|
191
|
+
nftId = getRegistry().register(info);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Internal
|
|
195
|
+
|
|
196
|
+
function _getAndVerifyContractInfo(
|
|
197
|
+
IRegisterable registerable,
|
|
198
|
+
ObjectType expectedType, // assume can be valid only
|
|
199
|
+
address expectedOwner // assume can be 0 when given by other service
|
|
200
|
+
)
|
|
201
|
+
internal
|
|
202
|
+
view
|
|
203
|
+
returns(
|
|
204
|
+
IRegistry.ObjectInfo memory info
|
|
205
|
+
)
|
|
206
|
+
{
|
|
207
|
+
info = registerable.getInitialInfo();
|
|
208
|
+
|
|
209
|
+
if(info.objectAddress != address(registerable)) {
|
|
210
|
+
revert ErrorRegistryServiceRegisterableAddressInvalid(registerable, info.objectAddress);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
|
214
|
+
revert ErrorRegistryServiceRegisterableTypeInvalid(registerable, expectedType, info.objectType);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
address owner = info.initialOwner;
|
|
218
|
+
|
|
219
|
+
if(owner != expectedOwner) { // registerable owner protection
|
|
220
|
+
revert ErrorRegistryServiceRegisterableOwnerInvalid(registerable, expectedOwner, owner);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if(owner == address(registerable)) {
|
|
224
|
+
revert ErrorRegistryServiceRegisterableSelfRegistration(registerable);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if(owner == address(0)) {
|
|
228
|
+
revert ErrorRegistryServiceRegisterableOwnerZero(registerable);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if(getRegistry().isRegistered(owner)) {
|
|
232
|
+
revert ErrorRegistryServiceRegisterableOwnerRegistered(registerable, owner);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function _verifyObjectInfo(
|
|
237
|
+
IRegistry.ObjectInfo memory info,
|
|
238
|
+
ObjectType expectedType
|
|
239
|
+
)
|
|
240
|
+
internal
|
|
241
|
+
view
|
|
242
|
+
{
|
|
243
|
+
if(info.objectAddress > address(0)) {
|
|
244
|
+
revert ErrorRegistryServiceObjectAddressNotZero(info.objectType);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
|
|
248
|
+
revert ErrorRegistryServiceObjectTypeInvalid(expectedType, info.objectType);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
address owner = info.initialOwner;
|
|
252
|
+
|
|
253
|
+
if(owner == address(0)) {
|
|
254
|
+
revert ErrorRegistryServiceObjectOwnerZero(info.objectType);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if(getRegistry().isRegistered(owner)) {
|
|
258
|
+
revert ErrorRegistryServiceObjectOwnerRegistered(info.objectType, owner);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// From IService
|
|
263
|
+
function _getDomain() internal override pure returns(ObjectType serviceDomain) {
|
|
264
|
+
return REGISTRY();
|
|
265
|
+
}
|
|
266
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import {IVersionable} from "../shared/IVersionable.sol";
|
|
5
|
+
import {ProxyManager} from "../shared/ProxyManager.sol";
|
|
6
|
+
import {RegistryService} from "./RegistryService.sol";
|
|
7
|
+
|
|
8
|
+
contract RegistryServiceManager is
|
|
9
|
+
ProxyManager
|
|
10
|
+
{
|
|
11
|
+
error ErrorRegistryAccessManagerAuthorityZero();
|
|
12
|
+
error ErrorRegistryAccessManagerRegistryZero();
|
|
13
|
+
|
|
14
|
+
bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
|
|
15
|
+
|
|
16
|
+
RegistryService private immutable _registryService;
|
|
17
|
+
|
|
18
|
+
/// @dev initializes proxy manager with registry service implementation and deploys registry
|
|
19
|
+
constructor(
|
|
20
|
+
address authority, // used by implementation
|
|
21
|
+
address registry, // used by implementation
|
|
22
|
+
bytes32 salt
|
|
23
|
+
)
|
|
24
|
+
ProxyManager(registry)
|
|
25
|
+
{
|
|
26
|
+
if(authority == address(0)) {
|
|
27
|
+
revert ErrorRegistryAccessManagerAuthorityZero();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if(registry == address(0)) {
|
|
31
|
+
revert ErrorRegistryAccessManagerRegistryZero();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
RegistryService srv = new RegistryService{ salt: salt }();
|
|
35
|
+
bytes memory data = abi.encode(registry, authority);
|
|
36
|
+
IVersionable versionable = deployDetermenistic(
|
|
37
|
+
address(srv),
|
|
38
|
+
data,
|
|
39
|
+
salt);
|
|
40
|
+
|
|
41
|
+
_registryService = RegistryService(address(versionable));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//--- view functions ----------------------------------------------------//
|
|
45
|
+
|
|
46
|
+
function getRegistryService()
|
|
47
|
+
external
|
|
48
|
+
view
|
|
49
|
+
returns (RegistryService registryService)
|
|
50
|
+
{
|
|
51
|
+
return _registryService;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import {RELEASE} from "../type/ObjectType.sol";
|
|
5
|
+
import {SCHEDULED, DEPLOYING, ACTIVE, PAUSED, CLOSED/*, FREE*/} from "../type/StateId.sol";
|
|
6
|
+
import {Lifecycle} from "../shared/Lifecycle.sol";
|
|
7
|
+
|
|
8
|
+
contract ReleaseLifecycle is
|
|
9
|
+
Lifecycle
|
|
10
|
+
{
|
|
11
|
+
constructor() {
|
|
12
|
+
_setupLifecycle();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function _setupLifecycle()
|
|
16
|
+
private
|
|
17
|
+
{
|
|
18
|
+
_initialState[RELEASE()] = SCHEDULED();
|
|
19
|
+
|
|
20
|
+
_isValidTransition[RELEASE()][SCHEDULED()][DEPLOYING()] = true;
|
|
21
|
+
_isValidTransition[RELEASE()][DEPLOYING()][DEPLOYING()] = true;
|
|
22
|
+
_isValidTransition[RELEASE()][DEPLOYING()][ACTIVE()] = true;
|
|
23
|
+
_isValidTransition[RELEASE()][ACTIVE()][PAUSED()] = true;
|
|
24
|
+
_isValidTransition[RELEASE()][PAUSED()][ACTIVE()] = true;
|
|
25
|
+
_isValidTransition[RELEASE()][PAUSED()][CLOSED()] = true;
|
|
26
|
+
//_isValidTransition[RELEASE()][ACTIVE()][FREE()] = true;
|
|
27
|
+
}
|
|
28
|
+
}
|