@etherisc/gif-next 0.0.2-7340474-070 → 0.0.2-742eda3-807
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 +30 -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/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
- 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/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
- 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 +106 -90
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +55 -55
- 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 +32 -16
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -39
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +0 -13
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +27 -39
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +29 -90
- 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 +60 -120
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -91
- 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/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 -9
- 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/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 +32 -32
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
- 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 +44 -44
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +40 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- 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/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 +36 -36
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
- 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 +72 -72
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- 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/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +58 -58
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
- 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 +20 -20
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
- 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/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 +233 -388
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
- 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 +148 -207
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
- 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 +62 -86
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -61
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- 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/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/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/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
- 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 -40
- 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 +26 -26
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +142 -166
- 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 +55 -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 +117 -14
- 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 +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- 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/{shared → authorization}/AccessAdmin.sol +135 -303
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
- 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 +10 -5
- package/contracts/distribution/IDistributionComponent.sol +17 -35
- package/contracts/distribution/IDistributionService.sol +5 -1
- package/contracts/instance/IInstance.sol +3 -4
- package/contracts/instance/IInstanceService.sol +7 -12
- package/contracts/instance/Instance.sol +58 -67
- package/contracts/instance/InstanceAdmin.sol +202 -267
- package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
- package/contracts/instance/InstanceReader.sol +22 -9
- package/contracts/instance/InstanceService.sol +66 -62
- package/contracts/instance/InstanceStore.sol +11 -4
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/ObjectManager.sol +7 -8
- 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/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +49 -0
- package/contracts/pool/IPoolComponent.sol +0 -60
- package/contracts/pool/Pool.sol +143 -131
- package/contracts/pool/PoolService.sol +1 -1
- package/contracts/product/BasicProduct.sol +82 -0
- package/contracts/product/BasicProductAuthorization.sol +40 -0
- package/contracts/product/IProductComponent.sol +6 -9
- package/contracts/product/Product.sol +103 -88
- package/contracts/registry/IRegistry.sol +5 -8
- package/contracts/registry/Registry.sol +1 -5
- package/contracts/registry/RegistryAdmin.sol +103 -71
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseManager.sol +127 -167
- package/contracts/registry/ServiceAuthorizationV3.sol +9 -9
- package/contracts/shared/ComponentService.sol +20 -56
- 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/InstanceLinkedComponent.sol +26 -19
- package/contracts/shared/KeyValueStore.sol +6 -2
- package/contracts/shared/Lifecycle.sol +16 -69
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingStore.sol +3 -1
- package/contracts/type/ObjectType.sol +34 -0
- package/contracts/type/RoleId.sol +55 -82
- package/contracts/type/UFixed.sol +6 -0
- package/package.json +6 -3
- 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/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- 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 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- 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/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- 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
@@ -14,11 +14,10 @@ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} fr
|
|
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,49 +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";
|
29
|
-
import {IServiceAuthorization} from "
|
30
|
-
import {IAccessAdmin} from "../
|
28
|
+
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
29
|
+
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
31
30
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
32
31
|
import {Registry} from "./Registry.sol";
|
33
32
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
33
|
+
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
34
34
|
|
35
|
-
|
35
|
+
// TODO rename to something that does not end with 'Manager'
|
36
|
+
// everywhere else *Manager points to an upgradeable contract
|
36
37
|
contract ReleaseManager is
|
37
|
-
AccessManaged,
|
38
|
-
|
38
|
+
AccessManaged,
|
39
|
+
ReleaseLifecycle,
|
39
40
|
IRegistryLinked
|
40
41
|
{
|
41
42
|
using ObjectTypeLib for ObjectType;
|
42
43
|
|
43
44
|
uint256 public constant INITIAL_GIF_VERSION = 3;
|
44
45
|
|
45
|
-
event LogReleaseCreation(VersionPart version, bytes32 salt
|
46
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt);
|
46
47
|
event LogReleaseActivation(VersionPart version);
|
48
|
+
event LogReleaseDisabled(VersionPart version);
|
49
|
+
event LogReleaseEnabled(VersionPart version);
|
47
50
|
|
48
51
|
// constructor
|
49
52
|
error ErrorReleaseManagerNotRegistry(Registry registry);
|
50
53
|
|
51
54
|
// createNextRelease
|
52
|
-
error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
|
55
|
+
error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
|
53
56
|
|
54
57
|
// prepareRelease
|
55
|
-
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
56
|
-
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
|
57
|
-
error ErrorReleaseManagerVersionMismatch(VersionPart
|
58
|
+
error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
|
59
|
+
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
|
60
|
+
error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
|
58
61
|
error ErrorReleaseManagerNoDomains(VersionPart version);
|
59
62
|
|
60
|
-
// register staking
|
61
|
-
//error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
62
|
-
|
63
63
|
// registerService
|
64
64
|
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
65
65
|
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
66
66
|
error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
67
|
-
error ErrorReleaseManagerNotService(
|
68
|
-
error
|
67
|
+
error ErrorReleaseManagerNotService(address notService);
|
68
|
+
error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
|
69
69
|
|
70
70
|
// activateNextRelease
|
71
|
-
error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
|
71
|
+
error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
|
72
72
|
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
73
73
|
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
74
74
|
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
@@ -92,27 +92,24 @@ contract ReleaseManager is
|
|
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
|
-
// TODO remove once it's clear that release authority will always be registry authority
|
101
|
-
mapping(VersionPart version => address authority) internal _releaseAccessManager;
|
102
99
|
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
103
|
-
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
104
|
-
|
105
100
|
mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
|
106
101
|
|
107
|
-
|
102
|
+
// TODO check where/why this is used
|
103
|
+
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
104
|
+
|
105
|
+
VersionPart private _initial;// first active version
|
108
106
|
VersionPart internal _latest; // latest active version
|
109
107
|
VersionPart internal _next; // version to create and activate
|
110
|
-
|
108
|
+
mapping(VersionPart verson => StateId releaseState) private _state;
|
111
109
|
|
112
110
|
uint256 internal _registeredServices;
|
113
111
|
uint256 internal _servicesToRegister;
|
114
112
|
|
115
|
-
// deployer of this contract must be gif admin
|
116
113
|
constructor(Registry registry)
|
117
114
|
AccessManaged(msg.sender)
|
118
115
|
{
|
@@ -121,35 +118,26 @@ contract ReleaseManager is
|
|
121
118
|
revert ErrorReleaseManagerNotRegistry(registry);
|
122
119
|
}
|
123
120
|
|
121
|
+
setAuthority(registry.getAuthority());
|
122
|
+
|
124
123
|
_registry = registry;
|
125
|
-
setAuthority(_registry.getAuthority());
|
126
124
|
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
127
125
|
|
128
126
|
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
129
127
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
130
|
-
_state = getInitialState(RELEASE());
|
131
|
-
|
132
|
-
AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
|
133
|
-
masterReleaseAccessManager.initialize(_registry.NFT_LOCK_ADDRESS(), VersionLib.toVersionPart(0));
|
134
|
-
//masterReleaseAccessManager.disable();
|
135
|
-
_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
|
136
128
|
}
|
137
129
|
|
138
130
|
/// @dev skips previous release if was not activated
|
139
|
-
/// sets release
|
131
|
+
/// sets next release into state SCHEDULED
|
140
132
|
function createNextRelease()
|
141
133
|
external
|
142
134
|
restricted() // GIF_ADMIN_ROLE
|
143
135
|
returns(VersionPart)
|
144
136
|
{
|
145
|
-
if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
|
146
|
-
revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
|
147
|
-
}
|
148
|
-
|
149
137
|
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
150
138
|
_servicesToRegister = 0;
|
151
139
|
_registeredServices = 0;
|
152
|
-
_state =
|
140
|
+
_state[_next] = getInitialState(RELEASE());
|
153
141
|
|
154
142
|
return _next;
|
155
143
|
}
|
@@ -166,103 +154,98 @@ contract ReleaseManager is
|
|
166
154
|
bytes32 releaseSalt
|
167
155
|
)
|
168
156
|
{
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
157
|
+
authority = _admin.authority();
|
158
|
+
version = _next;
|
159
|
+
|
160
|
+
// ensures unique salt
|
161
|
+
// TODO CreateX have clones capability also
|
162
|
+
// what would releaseSalt look like if used with CreateX in pemissioned mode?
|
163
|
+
releaseSalt = keccak256(
|
164
|
+
bytes.concat(
|
165
|
+
bytes32(version.toInt()),
|
166
|
+
salt));
|
167
|
+
|
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();
|
175
174
|
|
176
175
|
// verify authorizaion contract release matches with expected version
|
177
|
-
|
178
|
-
|
176
|
+
VersionPart releaseVersion = serviceAuthorization.getRelease();
|
177
|
+
if (releaseVersion != version) {
|
178
|
+
revert ErrorReleaseManagerVersionMismatch(version, releaseVersion);
|
179
179
|
}
|
180
180
|
|
181
|
+
|
181
182
|
// sanity check to ensure service domain list is not empty
|
183
|
+
uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
182
184
|
if (serviceDomainsCount == 0) {
|
183
|
-
revert ErrorReleaseManagerNoDomains(
|
184
|
-
}
|
185
|
-
|
186
|
-
// verify release manager is in proper state to start deploying a next release
|
187
|
-
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
188
|
-
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
185
|
+
revert ErrorReleaseManagerNoDomains(version);
|
189
186
|
}
|
190
187
|
|
191
188
|
// verify prepareNextRelease is only called once per release
|
192
189
|
if(_servicesToRegister > 0) {
|
193
|
-
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
190
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version, _state[version]);
|
194
191
|
}
|
195
192
|
|
196
|
-
// store release specific service authorization
|
197
|
-
_serviceAuthorization[_next] = serviceAuthorization;
|
198
|
-
|
199
|
-
// ensures unique salt
|
200
|
-
releaseSalt = keccak256(
|
201
|
-
bytes.concat(
|
202
|
-
bytes32(version.toInt()),
|
203
|
-
salt));
|
204
|
-
|
205
|
-
authority = _admin.authority();
|
206
|
-
|
207
|
-
_releaseAccessManager[_next] = authority;
|
208
193
|
_servicesToRegister = serviceDomainsCount;
|
194
|
+
_serviceAuthorization[version] = serviceAuthorization;
|
209
195
|
|
210
|
-
|
211
|
-
|
212
|
-
emit LogReleaseCreation(version, releaseSalt, authority);
|
196
|
+
emit LogReleaseCreation(version, releaseSalt);
|
213
197
|
}
|
214
198
|
|
215
|
-
|
199
|
+
// TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
|
216
200
|
function registerService(IService service)
|
217
201
|
external
|
218
202
|
restricted // GIF_MANAGER_ROLE
|
219
203
|
returns(NftId nftId)
|
220
204
|
{
|
221
|
-
|
222
|
-
|
223
|
-
|
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);
|
224
212
|
}
|
225
213
|
|
214
|
+
_state[releaseVersion] = DEPLOYING();
|
215
|
+
|
216
|
+
// not all services are registered
|
226
217
|
if (_servicesToRegister == _registeredServices) {
|
227
218
|
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
228
219
|
}
|
229
220
|
|
221
|
+
// service can work with release manager
|
230
222
|
(
|
231
223
|
IRegistry.ObjectInfo memory info,
|
232
|
-
ObjectType
|
233
|
-
VersionPart
|
224
|
+
ObjectType serviceDomain,
|
225
|
+
VersionPart serviceVersion
|
234
226
|
) = _verifyService(service);
|
235
227
|
|
236
|
-
|
237
|
-
|
238
|
-
|
228
|
+
// service domain matches defined in release config
|
229
|
+
ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
|
230
|
+
if (serviceDomain != expectedDomain) {
|
231
|
+
revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
|
239
232
|
}
|
240
233
|
|
241
|
-
// checked in registry
|
242
|
-
_releaseInfo[version].domains.push(domain);
|
243
|
-
|
244
234
|
// register service with registry
|
245
|
-
nftId = _registry.registerService(info,
|
246
|
-
_registeredServices++;
|
247
|
-
|
235
|
+
nftId = _registry.registerService(info, serviceVersion, serviceDomain);
|
248
236
|
service.linkToRegisteredNftId();
|
237
|
+
_registeredServices++;
|
249
238
|
|
250
239
|
// setup service authorization
|
251
240
|
_admin.authorizeService(
|
252
|
-
_serviceAuthorization[
|
241
|
+
_serviceAuthorization[releaseVersion],
|
253
242
|
service);
|
254
243
|
|
255
244
|
// TODO consider to extend this to REGISTRY
|
256
245
|
// special roles for registry/staking/pool service
|
257
|
-
if (
|
246
|
+
if (serviceDomain == STAKING() || serviceDomain == POOL()) {
|
258
247
|
// TODO rename to grantServiceDomainRole()
|
259
|
-
_admin.grantServiceRoleForAllVersions(service,
|
260
|
-
}
|
261
|
-
|
262
|
-
if (_registeredServices < _servicesToRegister) {
|
263
|
-
_state = DEPLOYING();
|
264
|
-
} else {
|
265
|
-
// TODO end state depends on (_awaitingRegistration == 0)
|
248
|
+
_admin.grantServiceRoleForAllVersions(service, serviceDomain);
|
266
249
|
}
|
267
250
|
}
|
268
251
|
|
@@ -271,12 +254,16 @@ contract ReleaseManager is
|
|
271
254
|
external
|
272
255
|
restricted // GIF_ADMIN_ROLE
|
273
256
|
{
|
274
|
-
|
275
|
-
|
257
|
+
VersionPart version = _next;
|
258
|
+
StateId state = _state[version];
|
259
|
+
StateId newState = ACTIVE();
|
260
|
+
|
261
|
+
// verify release in state DEPLOYING
|
262
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
263
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
276
264
|
}
|
277
265
|
|
278
266
|
// release fully deployed
|
279
|
-
VersionPart version = _next;
|
280
267
|
if(_registeredServices < _servicesToRegister) {
|
281
268
|
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
|
282
269
|
}
|
@@ -287,13 +274,8 @@ contract ReleaseManager is
|
|
287
274
|
revert ErrorReleaseManagerReleaseNotCreated(version);
|
288
275
|
}
|
289
276
|
|
290
|
-
// release is not activated
|
291
|
-
if(_releaseInfo[version].activatedAt.gtz()) {
|
292
|
-
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
293
|
-
}
|
294
|
-
|
295
277
|
_latest = version;
|
296
|
-
_state =
|
278
|
+
_state[version] = newState;
|
297
279
|
|
298
280
|
_releaseVersionByAddress[service] = version;
|
299
281
|
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
@@ -301,43 +283,49 @@ contract ReleaseManager is
|
|
301
283
|
emit LogReleaseActivation(version);
|
302
284
|
}
|
303
285
|
|
304
|
-
|
305
|
-
function
|
286
|
+
/// @dev stop all operations with release services
|
287
|
+
function pauseRelease(VersionPart version)
|
306
288
|
external
|
307
289
|
restricted // GIF_ADMIN_ROLE
|
308
290
|
{
|
309
|
-
|
310
|
-
|
311
|
-
revert ErrorReleaseManagerReleaseNotActivated(version);
|
312
|
-
}
|
291
|
+
StateId state = _state[version];
|
292
|
+
StateId newState = PAUSED();
|
313
293
|
|
314
|
-
// release
|
315
|
-
if(
|
316
|
-
revert
|
294
|
+
// verify release in state ACTIVE
|
295
|
+
if (!isValidTransition(RELEASE(), state, newState)) {
|
296
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
|
317
297
|
}
|
318
298
|
|
319
|
-
disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
|
320
|
-
|
321
299
|
// TODO come up with a substitute
|
322
|
-
//
|
300
|
+
//_releaseAccessManager[version].disable();
|
301
|
+
|
302
|
+
_state[version] = newState;
|
303
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
|
323
304
|
|
324
|
-
|
305
|
+
emit LogReleaseDisabled(version);
|
325
306
|
}
|
326
|
-
|
327
|
-
|
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)
|
328
311
|
external
|
329
312
|
restricted // GIF_ADMIN_ROLE
|
330
313
|
{
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
//
|
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
|
+
}
|
335
321
|
|
336
|
-
// reverts if disable delay expired
|
337
322
|
// TODO come up with a substitute
|
338
323
|
// _releaseAccessManager[version].enable();
|
339
324
|
|
325
|
+
_state[version] = newState;
|
340
326
|
_releaseInfo[version].disabledAt = zeroTimestamp();
|
327
|
+
|
328
|
+
emit LogReleaseEnabled(version);
|
341
329
|
}
|
342
330
|
|
343
331
|
//--- view functions ----------------------------------------------------//
|
@@ -356,7 +344,7 @@ contract ReleaseManager is
|
|
356
344
|
}
|
357
345
|
|
358
346
|
function isActiveRelease(VersionPart version) public view returns(bool) {
|
359
|
-
return
|
347
|
+
return _state[version] == ACTIVE();
|
360
348
|
}
|
361
349
|
|
362
350
|
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
@@ -375,20 +363,22 @@ contract ReleaseManager is
|
|
375
363
|
return _initial;
|
376
364
|
}
|
377
365
|
|
378
|
-
function getState() external view returns (StateId stateId) {
|
379
|
-
return _state;
|
366
|
+
function getState(VersionPart version) external view returns (StateId stateId) {
|
367
|
+
return _state[version];
|
380
368
|
}
|
381
369
|
|
382
370
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
383
371
|
return _servicesToRegister - _registeredServices;
|
384
372
|
}
|
385
373
|
|
386
|
-
|
387
|
-
|
388
|
-
|
374
|
+
function getServiceAuthorization(VersionPart version)
|
375
|
+
external
|
376
|
+
view
|
377
|
+
returns (IServiceAuthorization serviceAuthorization)
|
378
|
+
{
|
379
|
+
return _serviceAuthorization[version];
|
389
380
|
}
|
390
381
|
|
391
|
-
// TODO token registry knows nothing about adfmin, only registry
|
392
382
|
function getRegistryAdmin() external view returns (address) {
|
393
383
|
return address(_admin);
|
394
384
|
}
|
@@ -399,37 +389,6 @@ contract ReleaseManager is
|
|
399
389
|
return _registry;
|
400
390
|
}
|
401
391
|
|
402
|
-
//--- ILifecycle -----------------------------------------------------------//
|
403
|
-
|
404
|
-
function hasLifecycle(ObjectType objectType) external pure returns (bool) { return objectType == RELEASE(); }
|
405
|
-
|
406
|
-
function getInitialState(ObjectType objectType) public pure returns (StateId stateId) {
|
407
|
-
if (objectType == RELEASE()) {
|
408
|
-
stateId = INITIAL();
|
409
|
-
}
|
410
|
-
}
|
411
|
-
|
412
|
-
function isValidTransition(
|
413
|
-
ObjectType objectType,
|
414
|
-
StateId fromId,
|
415
|
-
StateId toId
|
416
|
-
)
|
417
|
-
public
|
418
|
-
pure
|
419
|
-
returns (bool isValid)
|
420
|
-
{
|
421
|
-
if (objectType != RELEASE()) { return false; }
|
422
|
-
|
423
|
-
if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
|
424
|
-
if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
|
425
|
-
if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
|
426
|
-
if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
|
427
|
-
if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
|
428
|
-
// TODO active -> scheduled missing, add tests to cover this and more scenarios (#358)
|
429
|
-
|
430
|
-
return false;
|
431
|
-
}
|
432
|
-
|
433
392
|
//--- private functions ----------------------------------------------------//
|
434
393
|
|
435
394
|
function _verifyService(IService service)
|
@@ -442,7 +401,7 @@ contract ReleaseManager is
|
|
442
401
|
)
|
443
402
|
{
|
444
403
|
if(!service.supportsInterface(type(IService).interfaceId)) {
|
445
|
-
revert ErrorReleaseManagerNotService(service);
|
404
|
+
revert ErrorReleaseManagerNotService(address(service));
|
446
405
|
}
|
447
406
|
|
448
407
|
address owner = msg.sender;
|
@@ -453,15 +412,15 @@ contract ReleaseManager is
|
|
453
412
|
|
454
413
|
_verifyServiceInfo(service, serviceInfo, owner);
|
455
414
|
|
456
|
-
VersionPart releaseVersion =
|
457
|
-
address
|
415
|
+
VersionPart releaseVersion = _next; // never 0
|
416
|
+
address expectedAuthority = _admin.authority(); // can be zero if registering service when release is not created
|
458
417
|
|
459
418
|
// IMPORTANT: can not guarantee service access is actually controlled by authority
|
460
|
-
if(serviceAuthority !=
|
419
|
+
if(serviceAuthority != expectedAuthority) {
|
461
420
|
revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
|
462
421
|
service,
|
463
422
|
serviceAuthority,
|
464
|
-
|
423
|
+
expectedAuthority);
|
465
424
|
}
|
466
425
|
|
467
426
|
if(serviceVersion != releaseVersion) {
|
@@ -489,7 +448,7 @@ contract ReleaseManager is
|
|
489
448
|
revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
|
490
449
|
}
|
491
450
|
|
492
|
-
if(info.objectType != SERVICE()) {
|
451
|
+
if(info.objectType != SERVICE()) {
|
493
452
|
revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
|
494
453
|
}
|
495
454
|
|
@@ -516,7 +475,7 @@ contract ReleaseManager is
|
|
516
475
|
return false;
|
517
476
|
}
|
518
477
|
// TODO try catch and return false in case of revert
|
519
|
-
//
|
478
|
+
// or just panic
|
520
479
|
// check if contract returns a zero nft id for its own address
|
521
480
|
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
522
481
|
return false;
|
@@ -525,3 +484,4 @@ contract ReleaseManager is
|
|
525
484
|
return true;
|
526
485
|
}
|
527
486
|
}
|
487
|
+
|
@@ -6,7 +6,7 @@ import {
|
|
6
6
|
} from "../../contracts/type/ObjectType.sol";
|
7
7
|
|
8
8
|
import {ComponentService} from "../shared/ComponentService.sol";
|
9
|
-
import {
|
9
|
+
import {IAccess} from "../authorization/IAccess.sol";
|
10
10
|
import {IBundleService} from "../pool/IBundleService.sol";
|
11
11
|
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
12
12
|
import {InstanceService} from "../instance/InstanceService.sol";
|
@@ -14,7 +14,7 @@ import {IInstanceService} from "../instance/IInstanceService.sol";
|
|
14
14
|
import {IPoolService} from "../pool/IPoolService.sol";
|
15
15
|
import {IStakingService} from "../staking/IStakingService.sol";
|
16
16
|
import {IRegistryService} from "./IRegistryService.sol";
|
17
|
-
import {ServiceAuthorization} from "
|
17
|
+
import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
|
18
18
|
|
19
19
|
|
20
20
|
contract ServiceAuthorizationV3
|
@@ -64,7 +64,7 @@ contract ServiceAuthorizationV3
|
|
64
64
|
function _setupIRegistryServiceAuthorization()
|
65
65
|
internal
|
66
66
|
{
|
67
|
-
|
67
|
+
IAccess.FunctionInfo[] storage functions;
|
68
68
|
|
69
69
|
functions = _authorizeForService(REGISTRY(), APPLICATION());
|
70
70
|
_authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
|
@@ -98,7 +98,7 @@ contract ServiceAuthorizationV3
|
|
98
98
|
function _setupStakingServiceAuthorization()
|
99
99
|
internal
|
100
100
|
{
|
101
|
-
|
101
|
+
IAccess.FunctionInfo[] storage functions;
|
102
102
|
|
103
103
|
functions = _authorizeForService(STAKING(), INSTANCE());
|
104
104
|
_authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
|
@@ -121,10 +121,10 @@ contract ServiceAuthorizationV3
|
|
121
121
|
function _setupInstanceServiceAuthorization()
|
122
122
|
internal
|
123
123
|
{
|
124
|
-
|
124
|
+
IAccess.FunctionInfo[] storage functions;
|
125
125
|
|
126
126
|
functions = _authorizeForService(INSTANCE(), COMPONENT());
|
127
|
-
_authorize(functions, IInstanceService.
|
127
|
+
_authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
|
128
128
|
}
|
129
129
|
|
130
130
|
|
@@ -159,7 +159,7 @@ contract ServiceAuthorizationV3
|
|
159
159
|
function _setupDistributionServiceAuthorization()
|
160
160
|
internal
|
161
161
|
{
|
162
|
-
|
162
|
+
IAccess.FunctionInfo[] storage functions;
|
163
163
|
|
164
164
|
functions = _authorizeForService(DISTRIBUTION(), POLICY());
|
165
165
|
_authorize(functions, IDistributionService.processSale.selector, "processSale");
|
@@ -170,7 +170,7 @@ contract ServiceAuthorizationV3
|
|
170
170
|
function _setupPoolServiceAuthorization()
|
171
171
|
internal
|
172
172
|
{
|
173
|
-
|
173
|
+
IAccess.FunctionInfo[] storage functions;
|
174
174
|
|
175
175
|
functions = _authorizeForService(POOL(), POLICY());
|
176
176
|
_authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
|
@@ -187,7 +187,7 @@ contract ServiceAuthorizationV3
|
|
187
187
|
function _setupBundleServiceAuthorization()
|
188
188
|
internal
|
189
189
|
{
|
190
|
-
|
190
|
+
IAccess.FunctionInfo[] storage functions;
|
191
191
|
|
192
192
|
functions = _authorizeForService(BUNDLE(), POOL());
|
193
193
|
_authorize(functions, IBundleService.create.selector, "create");
|