@etherisc/gif-next 0.0.2-e802d97-251 → 0.0.2-e83e4a5-207
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 +18 -2
- 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 +17 -242
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +138 -93
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +65 -57
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +45 -16
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -108
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +58 -78
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +147 -40
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -140
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
- 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 +110 -76
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +210 -103
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -49
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -135
- 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 +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -78
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +66 -29
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +44 -32
- 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 +78 -49
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +50 -42
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +13 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +13 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +62 -41
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +42 -38
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -37
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -36
- 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 +106 -69
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +64 -52
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +84 -47
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +53 -41
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +92 -63
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +57 -49
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +13 -153
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +38 -30
- 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 +0 -44
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -0
- 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 +24 -68
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1505 -166
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +50 -13
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -25
- 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/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +185 -318
- 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 +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +82 -85
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -60
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
- 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/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +13 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
- 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/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -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 +13 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
- 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/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +22 -22
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
- 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 +14 -14
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -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 +13 -0
- 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/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +44 -28
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -84
- 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 +40 -56
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +92 -73
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -47
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +197 -149
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
- 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 +8 -8
- 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 +4 -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 +136 -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 +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- 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 +2 -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 +4 -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 +2 -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 -104
- package/contracts/distribution/DistributionService.sol +13 -9
- package/contracts/distribution/IDistributionComponent.sol +17 -35
- package/contracts/distribution/IDistributionService.sol +5 -1
- package/contracts/instance/IInstance.sol +11 -7
- package/contracts/instance/IInstanceService.sol +29 -18
- package/contracts/instance/Instance.sol +103 -85
- package/contracts/instance/InstanceAdmin.sol +202 -267
- package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
- package/contracts/instance/InstanceReader.sol +24 -9
- package/contracts/instance/InstanceService.sol +151 -70
- package/contracts/instance/InstanceStore.sol +15 -20
- package/contracts/instance/base/BalanceStore.sol +11 -6
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/ObjectManager.sol +7 -10
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/Oracle.sol +61 -49
- package/contracts/oracle/OracleService.sol +5 -4
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +49 -0
- package/contracts/pool/BundleService.sol +19 -19
- package/contracts/pool/IPoolComponent.sol +0 -60
- package/contracts/pool/Pool.sol +143 -131
- package/contracts/pool/PoolService.sol +7 -8
- 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 +5 -5
- package/contracts/product/IProductComponent.sol +6 -9
- package/contracts/product/PolicyService.sol +5 -5
- package/contracts/product/PricingService.sol +4 -5
- package/contracts/product/Product.sol +103 -88
- package/contracts/product/ProductService.sol +5 -5
- package/contracts/registry/IRegistry.sol +5 -8
- package/contracts/registry/Registry.sol +6 -4
- package/contracts/registry/RegistryAdmin.sol +276 -148
- package/contracts/registry/RegistryService.sol +5 -5
- package/contracts/registry/RegistryServiceManager.sol +0 -5
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseManager.sol +161 -274
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/shared/ComponentService.sol +24 -61
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +1 -2
- package/contracts/shared/IService.sol +7 -0
- package/contracts/shared/InstanceLinkedComponent.sol +26 -19
- package/contracts/shared/KeyValueStore.sol +6 -2
- package/contracts/shared/Lifecycle.sol +16 -69
- package/contracts/shared/Service.sol +27 -21
- package/contracts/staking/IStakingService.sol +11 -7
- package/contracts/staking/StakeManagerLib.sol +52 -0
- package/contracts/staking/Staking.sol +58 -96
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingService.sol +61 -56
- package/contracts/staking/StakingServiceManager.sol +0 -1
- package/contracts/staking/StakingStore.sol +82 -39
- package/contracts/type/ObjectType.sol +169 -62
- package/contracts/type/RoleId.sol +103 -75
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/String.sol +53 -0
- package/contracts/type/UFixed.sol +6 -0
- package/package.json +4 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- 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/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerCustom.sol +0 -736
- package/contracts/shared/AccessManagerExtended.sol +0 -470
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
@@ -10,15 +10,14 @@ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
|
10
10
|
|
11
11
|
import {NftId} from "../type/NftId.sol";
|
12
12
|
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
|
-
import {ObjectType, ObjectTypeLib, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
13
|
+
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
14
14
|
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
15
15
|
import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
|
16
16
|
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
17
|
-
import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
|
17
|
+
import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE, PAUSED, CLOSED} from "../type/StateId.sol";
|
18
18
|
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
19
19
|
|
20
20
|
import {IService} from "../shared/IService.sol";
|
21
|
-
import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
|
22
21
|
import {ILifecycle} from "../shared/ILifecycle.sol";
|
23
22
|
import {INftOwnable} from "../shared/INftOwnable.sol";
|
24
23
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
@@ -26,45 +25,50 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
|
|
26
25
|
import {IRegistry} from "./IRegistry.sol";
|
27
26
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
28
27
|
import {IRegistryService} from "./IRegistryService.sol";
|
28
|
+
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
29
|
+
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
29
30
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
30
31
|
import {Registry} from "./Registry.sol";
|
31
32
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
32
|
-
import {
|
33
|
-
|
33
|
+
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
34
34
|
|
35
|
+
// TODO rename to something that does not end with 'Manager'
|
36
|
+
// everywhere else *Manager points to an upgradeable contract
|
35
37
|
contract ReleaseManager is
|
36
|
-
AccessManaged,
|
37
|
-
|
38
|
+
AccessManaged,
|
39
|
+
ReleaseLifecycle,
|
38
40
|
IRegistryLinked
|
39
41
|
{
|
40
42
|
using ObjectTypeLib for ObjectType;
|
41
43
|
|
42
44
|
uint256 public constant INITIAL_GIF_VERSION = 3;
|
43
45
|
|
44
|
-
event LogReleaseCreation(VersionPart version, bytes32 salt
|
46
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt);
|
45
47
|
event LogReleaseActivation(VersionPart version);
|
48
|
+
event LogReleaseDisabled(VersionPart version);
|
49
|
+
event LogReleaseEnabled(VersionPart version);
|
46
50
|
|
47
51
|
// constructor
|
48
52
|
error ErrorReleaseManagerNotRegistry(Registry registry);
|
49
53
|
|
50
54
|
// createNextRelease
|
51
|
-
error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
|
55
|
+
error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
|
52
56
|
|
53
57
|
// prepareRelease
|
54
|
-
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
55
|
-
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
|
56
|
-
|
57
|
-
|
58
|
-
//error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
58
|
+
error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
|
59
|
+
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
|
60
|
+
error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
|
61
|
+
error ErrorReleaseManagerNoDomains(VersionPart version);
|
59
62
|
|
60
63
|
// registerService
|
61
64
|
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
62
65
|
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
63
|
-
error
|
64
|
-
error
|
66
|
+
error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
67
|
+
error ErrorReleaseManagerNotService(address notService);
|
68
|
+
error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
|
65
69
|
|
66
70
|
// activateNextRelease
|
67
|
-
error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
|
71
|
+
error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
|
68
72
|
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
69
73
|
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
70
74
|
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
@@ -85,30 +89,27 @@ contract ReleaseManager is
|
|
85
89
|
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
86
90
|
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
87
91
|
|
88
|
-
// _verifyReleaseAuthorizations
|
89
|
-
error ErrorReleaseManagerReleaseEmpty();
|
90
|
-
error ErrorReleaseManagerReleaseServiceRoleInvalid(uint serviceIdx, address service, RoleId role);
|
91
|
-
|
92
92
|
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
93
93
|
|
94
94
|
RegistryAdmin public immutable _admin;
|
95
|
-
address public immutable _releaseAccessManagerCodeAddress;
|
96
95
|
Registry public immutable _registry;
|
97
96
|
IRegisterable private _staking;
|
98
97
|
address private _stakingOwner;
|
99
98
|
|
100
|
-
mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
|
101
99
|
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
100
|
+
mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
|
101
|
+
|
102
|
+
// TODO check where/why this is used
|
102
103
|
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
103
104
|
|
104
|
-
VersionPart
|
105
|
+
VersionPart private _initial;// first active version
|
105
106
|
VersionPart internal _latest; // latest active version
|
106
107
|
VersionPart internal _next; // version to create and activate
|
107
|
-
|
108
|
+
mapping(VersionPart verson => StateId releaseState) private _state;
|
108
109
|
|
109
|
-
uint256 internal
|
110
|
+
uint256 internal _registeredServices;
|
111
|
+
uint256 internal _servicesToRegister;
|
110
112
|
|
111
|
-
// deployer of this contract must be gif admin
|
112
113
|
constructor(Registry registry)
|
113
114
|
AccessManaged(msg.sender)
|
114
115
|
{
|
@@ -117,154 +118,135 @@ contract ReleaseManager is
|
|
117
118
|
revert ErrorReleaseManagerNotRegistry(registry);
|
118
119
|
}
|
119
120
|
|
121
|
+
setAuthority(registry.getAuthority());
|
122
|
+
|
120
123
|
_registry = registry;
|
121
|
-
setAuthority(_registry.getAuthority());
|
122
124
|
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
123
125
|
|
124
126
|
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
125
127
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
126
|
-
_state = getInitialState(RELEASE());
|
127
|
-
|
128
|
-
AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
|
129
|
-
masterReleaseAccessManager.initialize(_registry.NFT_LOCK_ADDRESS(), VersionLib.toVersionPart(0));
|
130
|
-
//masterReleaseAccessManager.disable();
|
131
|
-
_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
|
132
128
|
}
|
133
129
|
|
134
130
|
/// @dev skips previous release if was not activated
|
135
|
-
/// sets release
|
131
|
+
/// sets next release into state SCHEDULED
|
136
132
|
function createNextRelease()
|
137
133
|
external
|
138
134
|
restricted() // GIF_ADMIN_ROLE
|
139
135
|
returns(VersionPart)
|
140
136
|
{
|
141
|
-
if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
|
142
|
-
revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
|
143
|
-
}
|
144
|
-
|
145
137
|
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
146
|
-
|
147
|
-
|
138
|
+
_servicesToRegister = 0;
|
139
|
+
_registeredServices = 0;
|
140
|
+
_state[_next] = getInitialState(RELEASE());
|
148
141
|
|
149
142
|
return _next;
|
150
143
|
}
|
151
144
|
|
152
|
-
// TODO order of events
|
153
145
|
function prepareNextRelease(
|
154
|
-
|
155
|
-
string[] memory names,
|
156
|
-
RoleId[][] memory serviceRoles,
|
157
|
-
string[][] memory serviceRoleNames,
|
158
|
-
RoleId[][] memory functionRoles,
|
159
|
-
string[][] memory functionRoleNames,
|
160
|
-
bytes4[][][] memory selectors,
|
146
|
+
IServiceAuthorization serviceAuthorization,
|
161
147
|
bytes32 salt
|
162
148
|
)
|
163
149
|
external
|
164
150
|
restricted() // GIF_MANAGER_ROLE
|
165
151
|
returns(
|
166
|
-
address
|
152
|
+
address authority,
|
167
153
|
VersionPart version,
|
168
154
|
bytes32 releaseSalt
|
169
155
|
)
|
170
156
|
{
|
171
|
-
|
157
|
+
authority = _admin.authority();
|
158
|
+
version = _next;
|
172
159
|
|
173
160
|
// ensures unique salt
|
161
|
+
// TODO CreateX have clones capability also
|
162
|
+
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
174
163
|
releaseSalt = keccak256(
|
175
164
|
bytes.concat(
|
176
165
|
bytes32(version.toInt()),
|
177
166
|
salt));
|
178
167
|
|
179
|
-
|
180
|
-
|
181
|
-
|
168
|
+
// verify release in state SCHEDULED
|
169
|
+
if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
|
170
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(version, _state[version]);
|
171
|
+
}
|
172
|
+
|
173
|
+
_state[version] = DEPLOYING();
|
182
174
|
|
183
|
-
|
184
|
-
|
175
|
+
// verify authorizaion contract release matches with expected version
|
176
|
+
VersionPart releaseVersion = serviceAuthorization.getRelease();
|
177
|
+
if (releaseVersion != version) {
|
178
|
+
revert ErrorReleaseManagerVersionMismatch(version, releaseVersion);
|
185
179
|
}
|
186
180
|
|
187
|
-
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
188
181
|
|
189
|
-
|
190
|
-
|
182
|
+
// sanity check to ensure service domain list is not empty
|
183
|
+
uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
184
|
+
if (serviceDomainsCount == 0) {
|
185
|
+
revert ErrorReleaseManagerNoDomains(version);
|
186
|
+
}
|
187
|
+
|
188
|
+
// verify prepareNextRelease is only called once per release
|
189
|
+
if(_servicesToRegister > 0) {
|
190
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version, _state[version]);
|
191
191
|
}
|
192
|
-
// TODO instead of copying just set ServiceAuthorizationsLib for release and array of domains???
|
193
|
-
_releaseInfo[version].version = version;
|
194
|
-
_releaseInfo[version].salt = releaseSalt;
|
195
|
-
_releaseInfo[version].addresses = addresses;
|
196
|
-
_releaseInfo[version].names = names;
|
197
|
-
_releaseInfo[version].serviceRoles = serviceRoles;
|
198
|
-
_releaseInfo[version].serviceRoleNames = serviceRoleNames;
|
199
|
-
_releaseInfo[version].functionRoles = functionRoles;
|
200
|
-
_releaseInfo[version].functionRoleNames = functionRoleNames;
|
201
|
-
_releaseInfo[version].selectors = selectors;
|
202
|
-
_awaitingRegistration = addresses.length;
|
203
|
-
_state = DEPLOYING();
|
204
|
-
_releaseAccessManager[version] = releaseAccessManager;
|
205
|
-
|
206
|
-
emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
|
207
|
-
}
|
208
192
|
|
193
|
+
_servicesToRegister = serviceDomainsCount;
|
194
|
+
_serviceAuthorization[version] = serviceAuthorization;
|
195
|
+
|
196
|
+
emit LogReleaseCreation(version, releaseSalt);
|
197
|
+
}
|
209
198
|
|
199
|
+
// TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
|
210
200
|
function registerService(IService service)
|
211
201
|
external
|
212
202
|
restricted // GIF_MANAGER_ROLE
|
213
203
|
returns(NftId nftId)
|
214
204
|
{
|
215
|
-
|
216
|
-
|
205
|
+
VersionPart releaseVersion = _next;
|
206
|
+
StateId state = _state[releaseVersion];
|
207
|
+
|
208
|
+
// verify release in state DEPLOYING
|
209
|
+
if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
|
210
|
+
// TOOD name must represent failed state transition
|
211
|
+
revert ErrorReleaseManagerServiceRegistrationDisallowed(state);
|
212
|
+
}
|
213
|
+
|
214
|
+
_state[releaseVersion] = DEPLOYING();
|
215
|
+
|
216
|
+
// not all services are registered
|
217
|
+
if (_servicesToRegister == _registeredServices) {
|
218
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
217
219
|
}
|
218
220
|
|
221
|
+
// service can work with release manager
|
219
222
|
(
|
220
223
|
IRegistry.ObjectInfo memory info,
|
221
|
-
ObjectType
|
222
|
-
VersionPart
|
224
|
+
ObjectType serviceDomain,
|
225
|
+
VersionPart serviceVersion
|
223
226
|
) = _verifyService(service);
|
224
227
|
|
225
|
-
//
|
226
|
-
|
227
|
-
|
228
|
+
// service domain matches defined in release config
|
229
|
+
ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
|
230
|
+
if (serviceDomain != expectedDomain) {
|
231
|
+
revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
|
228
232
|
}
|
229
233
|
|
230
|
-
|
231
|
-
|
232
|
-
// TODO temp, while typescript addresses computation is not implemented
|
233
|
-
/*if(address(service) != serviceAddress) {
|
234
|
-
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
235
|
-
}*/
|
236
|
-
|
237
|
-
_setServiceAuthorizations(
|
238
|
-
_releaseAccessManager[version],
|
239
|
-
// TODO temp, while typescript addresses computation is not implemented
|
240
|
-
address(service),//serviceAddress,
|
241
|
-
_releaseInfo[version].names[serviceIdx],
|
242
|
-
_releaseInfo[version].serviceRoles[serviceIdx],
|
243
|
-
_releaseInfo[version].serviceRoleNames[serviceIdx],
|
244
|
-
_releaseInfo[version].functionRoles[serviceIdx],
|
245
|
-
_releaseInfo[version].functionRoleNames[serviceIdx],
|
246
|
-
_releaseInfo[version].selectors[serviceIdx]);
|
247
|
-
|
248
|
-
// TODO decide for one of the approaches
|
249
|
-
// // service to service authorization
|
250
|
-
// ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
|
251
|
-
// for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
|
252
|
-
// _accessManager.setTargetFunctionRole(
|
253
|
-
// address(service),
|
254
|
-
// authz.authorizedSelectors[idx],
|
255
|
-
// authz.authorizedRole[idx]);
|
256
|
-
// }
|
257
|
-
|
258
|
-
_awaitingRegistration = serviceIdx;
|
259
|
-
// TODO end state depends on (_awaitingRegistration == 0)
|
260
|
-
_state = DEPLOYING();
|
261
|
-
|
262
|
-
// checked in registry
|
263
|
-
_releaseInfo[version].domains.push(domain);
|
264
|
-
|
265
|
-
nftId = _registry.registerService(info, version, domain);
|
266
|
-
|
234
|
+
// register service with registry
|
235
|
+
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
267
236
|
service.linkToRegisteredNftId();
|
237
|
+
_registeredServices++;
|
238
|
+
|
239
|
+
// setup service authorization
|
240
|
+
_admin.authorizeService(
|
241
|
+
_serviceAuthorization[releaseVersion],
|
242
|
+
service);
|
243
|
+
|
244
|
+
// TODO consider to extend this to REGISTRY
|
245
|
+
// special roles for registry/staking/pool service
|
246
|
+
if (serviceDomain == STAKING() || serviceDomain == POOL()) {
|
247
|
+
// TODO rename to grantServiceDomainRole()
|
248
|
+
_admin.grantServiceRoleForAllVersions(service, serviceDomain);
|
249
|
+
}
|
268
250
|
}
|
269
251
|
|
270
252
|
|
@@ -272,31 +254,28 @@ contract ReleaseManager is
|
|
272
254
|
external
|
273
255
|
restricted // GIF_ADMIN_ROLE
|
274
256
|
{
|
275
|
-
if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
|
276
|
-
revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
|
277
|
-
}
|
278
|
-
|
279
257
|
VersionPart version = _next;
|
280
|
-
|
258
|
+
StateId state = _state[version];
|
259
|
+
StateId newState = ACTIVE();
|
281
260
|
|
282
|
-
// release
|
283
|
-
|
284
|
-
|
285
|
-
revert ErrorReleaseManagerReleaseNotCreated(version);
|
261
|
+
// verify release in state DEPLOYING
|
262
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
263
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
286
264
|
}
|
287
265
|
|
288
266
|
// release fully deployed
|
289
|
-
if(
|
290
|
-
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version,
|
267
|
+
if(_registeredServices < _servicesToRegister) {
|
268
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
|
291
269
|
}
|
292
270
|
|
293
|
-
// release
|
294
|
-
|
295
|
-
|
271
|
+
// release exists, registry service MUST exist
|
272
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
273
|
+
if(service == address(0)) {
|
274
|
+
revert ErrorReleaseManagerReleaseNotCreated(version);
|
296
275
|
}
|
297
276
|
|
298
277
|
_latest = version;
|
299
|
-
_state =
|
278
|
+
_state[version] = newState;
|
300
279
|
|
301
280
|
_releaseVersionByAddress[service] = version;
|
302
281
|
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
@@ -304,41 +283,49 @@ contract ReleaseManager is
|
|
304
283
|
emit LogReleaseActivation(version);
|
305
284
|
}
|
306
285
|
|
307
|
-
|
308
|
-
function
|
286
|
+
/// @dev stop all operations with release services
|
287
|
+
function pauseRelease(VersionPart version)
|
309
288
|
external
|
310
289
|
restricted // GIF_ADMIN_ROLE
|
311
290
|
{
|
312
|
-
|
313
|
-
|
314
|
-
revert ErrorReleaseManagerReleaseNotActivated(version);
|
315
|
-
}
|
291
|
+
StateId state = _state[version];
|
292
|
+
StateId newState = PAUSED();
|
316
293
|
|
317
|
-
// release
|
318
|
-
if(
|
319
|
-
revert
|
294
|
+
// verify release in state ACTIVE
|
295
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
296
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
320
297
|
}
|
321
298
|
|
322
|
-
|
299
|
+
// TODO come up with a substitute
|
300
|
+
//_releaseAccessManager[version].disable();
|
323
301
|
|
324
|
-
|
302
|
+
_state[version] = newState;
|
303
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
325
304
|
|
326
|
-
|
305
|
+
emit LogReleaseDisabled(version);
|
327
306
|
}
|
328
|
-
|
329
|
-
|
307
|
+
|
308
|
+
// TODO consider revert if some delay is expired -> becomes disabled automatically
|
309
|
+
/// @dev resume operations with release services
|
310
|
+
function unpauseRelease(VersionPart version)
|
330
311
|
external
|
331
312
|
restricted // GIF_ADMIN_ROLE
|
332
313
|
{
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
//
|
314
|
+
StateId state = _state[version];
|
315
|
+
StateId newState = ACTIVE();
|
316
|
+
|
317
|
+
// verify release in state PAUSED
|
318
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
319
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
320
|
+
}
|
337
321
|
|
338
|
-
//
|
339
|
-
_releaseAccessManager[version].enable();
|
322
|
+
// TODO come up with a substitute
|
323
|
+
// _releaseAccessManager[version].enable();
|
340
324
|
|
325
|
+
_state[version] = newState;
|
341
326
|
_releaseInfo[version].disabledAt = zeroTimestamp();
|
327
|
+
|
328
|
+
emit LogReleaseEnabled(version);
|
342
329
|
}
|
343
330
|
|
344
331
|
//--- view functions ----------------------------------------------------//
|
@@ -357,7 +344,7 @@ contract ReleaseManager is
|
|
357
344
|
}
|
358
345
|
|
359
346
|
function isActiveRelease(VersionPart version) public view returns(bool) {
|
360
|
-
return
|
347
|
+
return _state[version] == ACTIVE();
|
361
348
|
}
|
362
349
|
|
363
350
|
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
@@ -376,18 +363,22 @@ contract ReleaseManager is
|
|
376
363
|
return _initial;
|
377
364
|
}
|
378
365
|
|
379
|
-
function getState() external view returns (StateId stateId) {
|
380
|
-
return _state;
|
366
|
+
function getState(VersionPart version) external view returns (StateId stateId) {
|
367
|
+
return _state[version];
|
381
368
|
}
|
382
369
|
|
383
370
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
384
|
-
return
|
371
|
+
return _servicesToRegister - _registeredServices;
|
385
372
|
}
|
386
373
|
|
387
|
-
function
|
388
|
-
|
374
|
+
function getServiceAuthorization(VersionPart version)
|
375
|
+
external
|
376
|
+
view
|
377
|
+
returns (IServiceAuthorization serviceAuthorization)
|
378
|
+
{
|
379
|
+
return _serviceAuthorization[version];
|
389
380
|
}
|
390
|
-
|
381
|
+
|
391
382
|
function getRegistryAdmin() external view returns (address) {
|
392
383
|
return address(_admin);
|
393
384
|
}
|
@@ -398,37 +389,6 @@ contract ReleaseManager is
|
|
398
389
|
return _registry;
|
399
390
|
}
|
400
391
|
|
401
|
-
//--- ILifecycle -----------------------------------------------------------//
|
402
|
-
|
403
|
-
function hasLifecycle(ObjectType objectType) external pure returns (bool) { return objectType == RELEASE(); }
|
404
|
-
|
405
|
-
function getInitialState(ObjectType objectType) public pure returns (StateId stateId) {
|
406
|
-
if (objectType == RELEASE()) {
|
407
|
-
stateId = INITIAL();
|
408
|
-
}
|
409
|
-
}
|
410
|
-
|
411
|
-
function isValidTransition(
|
412
|
-
ObjectType objectType,
|
413
|
-
StateId fromId,
|
414
|
-
StateId toId
|
415
|
-
)
|
416
|
-
public
|
417
|
-
pure
|
418
|
-
returns (bool isValid)
|
419
|
-
{
|
420
|
-
if (objectType != RELEASE()) { return false; }
|
421
|
-
|
422
|
-
if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
|
423
|
-
if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
|
424
|
-
if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
|
425
|
-
if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
|
426
|
-
if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
|
427
|
-
// TODO active -> scheduled missing, add tests to cover this and more scenarios (#358)
|
428
|
-
|
429
|
-
return false;
|
430
|
-
}
|
431
|
-
|
432
392
|
//--- private functions ----------------------------------------------------//
|
433
393
|
|
434
394
|
function _verifyService(IService service)
|
@@ -441,7 +401,7 @@ contract ReleaseManager is
|
|
441
401
|
)
|
442
402
|
{
|
443
403
|
if(!service.supportsInterface(type(IService).interfaceId)) {
|
444
|
-
revert ErrorReleaseManagerNotService(service);
|
404
|
+
revert ErrorReleaseManagerNotService(address(service));
|
445
405
|
}
|
446
406
|
|
447
407
|
address owner = msg.sender;
|
@@ -452,15 +412,15 @@ contract ReleaseManager is
|
|
452
412
|
|
453
413
|
_verifyServiceInfo(service, serviceInfo, owner);
|
454
414
|
|
455
|
-
VersionPart releaseVersion =
|
456
|
-
address
|
415
|
+
VersionPart releaseVersion = _next; // never 0
|
416
|
+
address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
|
457
417
|
|
458
418
|
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
459
|
-
if(serviceAuthority !=
|
419
|
+
if(serviceAuthority != expectedAuthority) {
|
460
420
|
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
461
421
|
service,
|
462
422
|
serviceAuthority,
|
463
|
-
|
423
|
+
expectedAuthority);
|
464
424
|
}
|
465
425
|
|
466
426
|
if(serviceVersion != releaseVersion) {
|
@@ -488,7 +448,7 @@ contract ReleaseManager is
|
|
488
448
|
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
489
449
|
}
|
490
450
|
|
491
|
-
if(info.objectType != SERVICE()) {
|
451
|
+
if(info.objectType != SERVICE()) {
|
492
452
|
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
493
453
|
}
|
494
454
|
|
@@ -507,81 +467,7 @@ contract ReleaseManager is
|
|
507
467
|
}
|
508
468
|
}
|
509
469
|
|
510
|
-
|
511
|
-
function _verifyReleaseAuthorizations(
|
512
|
-
address[] memory serviceAddress,
|
513
|
-
RoleId[][] memory serviceRoles,
|
514
|
-
RoleId[][] memory functionRoles,
|
515
|
-
bytes4[][][] memory selectors
|
516
|
-
)
|
517
|
-
internal
|
518
|
-
pure
|
519
|
-
{
|
520
|
-
if(serviceAddress.length == 0) {
|
521
|
-
revert ErrorReleaseManagerReleaseEmpty();
|
522
|
-
}
|
523
|
-
|
524
|
-
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
525
|
-
{
|
526
|
-
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
527
|
-
{
|
528
|
-
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
529
|
-
if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
|
530
|
-
revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
|
531
|
-
}
|
532
|
-
}
|
533
|
-
}
|
534
|
-
|
535
|
-
// TODO no duplicate service "domain" role per release
|
536
|
-
// TODO no duplicate service roles per service
|
537
|
-
// TODO no duplicate service function roles per service
|
538
|
-
// TODO no duplicate service function selectors per service
|
539
|
-
}
|
540
|
-
|
541
|
-
function _setServiceAuthorizations(
|
542
|
-
AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
|
543
|
-
address serviceAddress,
|
544
|
-
string memory serviceName,
|
545
|
-
RoleId[] memory serviceRoles,
|
546
|
-
string[] memory serviceRoleNames,
|
547
|
-
RoleId[] memory functionRoles,
|
548
|
-
string[] memory functionRoleNames,
|
549
|
-
bytes4[][] memory selectors
|
550
|
-
)
|
551
|
-
internal
|
552
|
-
{
|
553
|
-
accessManager.createTarget(serviceAddress, serviceName);
|
554
|
-
|
555
|
-
for(uint idx = 0; idx < functionRoles.length; idx++)
|
556
|
-
{
|
557
|
-
uint64 roleInt = functionRoles[idx].toInt();
|
558
|
-
|
559
|
-
if(!accessManager.isRoleExists(roleInt)) {
|
560
|
-
accessManager.createRole(roleInt, functionRoleNames[idx]);
|
561
|
-
}
|
562
|
-
|
563
|
-
accessManager.setTargetFunctionRole(
|
564
|
-
serviceAddress,
|
565
|
-
selectors[idx],
|
566
|
-
functionRoles[idx].toInt());
|
567
|
-
}
|
568
|
-
|
569
|
-
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
570
|
-
{
|
571
|
-
uint64 roleInt = serviceRoles[idx].toInt();
|
572
|
-
|
573
|
-
if(!accessManager.isRoleExists(roleInt)) {
|
574
|
-
accessManager.createRole(roleInt, serviceRoleNames[idx]);
|
575
|
-
}
|
576
|
-
|
577
|
-
accessManager.grantRole(
|
578
|
-
serviceRoles[idx].toInt(),
|
579
|
-
serviceAddress,
|
580
|
-
0);
|
581
|
-
}
|
582
|
-
}
|
583
|
-
|
584
|
-
// returns true iff a the address passes some simple proxy tests.
|
470
|
+
/// @dev returns true iff a the address passes some simple proxy tests.
|
585
471
|
function _isRegistry(address registryAddress) internal view returns (bool) {
|
586
472
|
|
587
473
|
// zero address is certainly not registry
|
@@ -589,7 +475,7 @@ contract ReleaseManager is
|
|
589
475
|
return false;
|
590
476
|
}
|
591
477
|
// TODO try catch and return false in case of revert
|
592
|
-
//
|
478
|
+
// or just panic
|
593
479
|
// check if contract returns a zero nft id for its own address
|
594
480
|
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
595
481
|
return false;
|
@@ -598,3 +484,4 @@ contract ReleaseManager is
|
|
598
484
|
return true;
|
599
485
|
}
|
600
486
|
}
|
487
|
+
|