@etherisc/gif-next 0.0.2-fd4931b-974 → 0.0.2-fd9539f-062
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 +20 -3
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +19 -13
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +115 -80
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +86 -59
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -5
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +20 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +32 -101
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +83 -71
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +121 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +105 -85
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +125 -29
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +195 -64
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +206 -49
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +79 -36
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +248 -118
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -71
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +91 -48
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +74 -43
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +20 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -5
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +35 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +18 -12
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +84 -42
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -40
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +79 -36
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -37
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +119 -68
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +88 -53
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +20 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +20 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -5
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +20 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +97 -46
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +77 -42
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +105 -62
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +81 -50
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +18 -12
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +61 -26
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +59 -32
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +82 -45
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -1
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -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 +254 -97
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -15
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +51 -35
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +288 -182
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +46 -177
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +119 -69
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +85 -54
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +20 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -5
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +0 -10
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +18 -12
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +10 -20
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +6 -6
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +27 -35
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +35 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +15 -9
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +247 -579
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +471 -62
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +303 -798
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -164
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -39
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +503 -120
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +67 -43
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +281 -18
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +96 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +114 -4
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +52 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -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/distribution/Distribution.sol +2 -4
- package/contracts/distribution/DistributionService.sol +5 -6
- package/contracts/distribution/DistributionServiceManager.sol +1 -13
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +1 -1
- package/contracts/instance/BundleManager.sol +1 -1
- package/contracts/instance/IInstance.sol +22 -12
- package/contracts/instance/IInstanceService.sol +27 -13
- package/contracts/instance/Instance.sol +85 -50
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +193 -152
- package/contracts/instance/InstanceReader.sol +33 -7
- package/contracts/instance/InstanceService.sol +120 -48
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +30 -21
- package/contracts/instance/base/BalanceStore.sol +12 -7
- package/contracts/instance/base/Cloneable.sol +3 -26
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectManager.sol +2 -4
- package/contracts/instance/module/IAccess.sol +3 -11
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -1
- package/contracts/instance/module/IDistribution.sol +1 -1
- package/contracts/instance/module/IPolicy.sol +1 -1
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/IOracle.sol +20 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +145 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +20 -20
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +1 -1
- package/contracts/pool/IPoolComponent.sol +1 -1
- package/contracts/pool/IPoolService.sol +4 -1
- package/contracts/pool/Pool.sol +1 -1
- package/contracts/pool/PoolService.sol +38 -10
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +6 -6
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/ClaimService.sol +12 -7
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +1 -1
- package/contracts/product/IClaimService.sol +7 -1
- package/contracts/product/IPolicyService.sol +1 -1
- package/contracts/product/IPricingService.sol +1 -1
- package/contracts/product/IProductComponent.sol +1 -1
- package/contracts/product/IProductService.sol +1 -1
- package/contracts/product/PolicyService.sol +9 -7
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +8 -9
- package/contracts/product/PricingServiceManager.sol +1 -1
- package/contracts/product/Product.sol +1 -1
- package/contracts/product/ProductService.sol +6 -6
- package/contracts/product/ProductServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +2 -1
- package/contracts/registry/IRegistry.sol +21 -15
- package/contracts/registry/IRegistryService.sol +2 -1
- package/contracts/registry/IServiceAuthorization.sol +35 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -1
- package/contracts/registry/Registry.sol +86 -67
- package/contracts/registry/RegistryAdmin.sol +333 -0
- package/contracts/registry/RegistryService.sol +9 -71
- package/contracts/registry/RegistryServiceManager.sol +2 -21
- package/contracts/registry/ReleaseManager.sol +219 -222
- package/contracts/registry/ServiceAuthorization.sol +86 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +57 -61
- package/contracts/shared/AccessAdmin.sol +759 -0
- package/contracts/shared/AccessManagerCustom.sol +741 -0
- package/contracts/shared/AccessManagerExtended.sol +481 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +9 -14
- package/contracts/shared/ComponentService.sol +40 -18
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +14 -8
- package/contracts/shared/ERC165.sol +1 -1
- package/contracts/shared/IAccessAdmin.sol +168 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +4 -8
- package/contracts/shared/IComponentService.sol +12 -1
- package/contracts/shared/IInstanceLinkedComponent.sol +1 -1
- package/contracts/shared/IKeyValueStore.sol +2 -2
- package/contracts/shared/ILifecycle.sol +1 -1
- package/contracts/shared/INftOwnable.sol +2 -2
- package/contracts/shared/IPolicyHolder.sol +1 -1
- package/contracts/shared/IRegisterable.sol +1 -1
- package/contracts/shared/IRegistryLinked.sol +1 -1
- package/contracts/shared/IService.sol +8 -1
- package/contracts/shared/IVersionable.sol +1 -1
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +2 -3
- package/contracts/shared/KeyValueStore.sol +2 -5
- package/contracts/shared/Lifecycle.sol +12 -3
- package/contracts/shared/NftIdSetManager.sol +3 -7
- package/contracts/shared/NftOwnable.sol +3 -14
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/ProxyManager.sol +7 -3
- package/contracts/shared/Registerable.sol +1 -1
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +28 -22
- package/contracts/shared/TokenHandler.sol +1 -1
- package/contracts/shared/UpgradableProxyWithAdmin.sol +1 -1
- package/contracts/shared/Versionable.sol +1 -1
- package/contracts/staking/IStaking.sol +94 -39
- package/contracts/staking/IStakingService.sol +71 -40
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +303 -138
- package/contracts/staking/StakingManager.sol +23 -21
- package/contracts/staking/StakingReader.sol +120 -25
- package/contracts/staking/StakingService.sol +194 -77
- package/contracts/staking/StakingServiceManager.sol +3 -3
- package/contracts/staking/StakingStore.sol +613 -0
- package/contracts/staking/TargetManagerLib.sol +77 -11
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +16 -2
- package/contracts/type/Blocknumber.sol +14 -2
- package/contracts/type/ClaimId.sol +1 -1
- package/contracts/type/DistributorType.sol +1 -1
- package/contracts/type/Fee.sol +1 -1
- package/contracts/type/Key32.sol +1 -1
- package/contracts/type/NftId.sol +9 -9
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +140 -68
- package/contracts/type/PayoutId.sol +1 -1
- package/contracts/type/Referral.sol +1 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +79 -21
- package/contracts/type/Seconds.sol +19 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +13 -1
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +7 -3
- package/contracts/type/UFixed.sol +1 -1
- package/contracts/type/Version.sol +1 -1
- package/package.json +6 -3
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -298
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/registry/RegistryAccessManager.sol +0 -167
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -1,68 +1,82 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.24;
|
3
3
|
|
4
|
+
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
|
4
5
|
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
6
|
import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
|
7
|
+
import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
|
6
8
|
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
|
9
|
+
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
7
10
|
|
8
|
-
import {
|
11
|
+
import {NftId} from "../type/NftId.sol";
|
12
|
+
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
|
+
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
14
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
15
|
+
import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
|
16
|
+
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
17
|
+
import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
|
18
|
+
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
19
|
+
|
20
|
+
import {IService} from "../shared/IService.sol";
|
21
|
+
import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
|
9
22
|
import {ILifecycle} from "../shared/ILifecycle.sol";
|
23
|
+
import {INftOwnable} from "../shared/INftOwnable.sol";
|
10
24
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
25
|
+
|
11
26
|
import {IRegistry} from "./IRegistry.sol";
|
27
|
+
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
12
28
|
import {IRegistryService} from "./IRegistryService.sol";
|
13
|
-
import {
|
14
|
-
import {
|
15
|
-
import {
|
16
|
-
import {ObjectType, ObjectTypeLib, zeroObjectType, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
29
|
+
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
30
|
+
import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
|
31
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
17
32
|
import {Registry} from "./Registry.sol";
|
18
|
-
import {RegistryAccessManager} from "./RegistryAccessManager.sol";
|
19
|
-
import {RoleId, ADMIN_ROLE} from "../type/RoleId.sol";
|
20
|
-
import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
|
21
|
-
import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
|
22
|
-
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
23
33
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
24
|
-
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
25
34
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
// TODO add function to deactivate releases
|
32
|
-
// TODO in next pr add getVersion() to releaseAccessManager only, set in initialize()
|
33
|
-
// TODO in next pr make single base for registry access manager, release access manager and instance access manager
|
34
|
-
|
35
|
-
contract ReleaseManager is
|
36
|
-
AccessManaged,
|
37
|
-
ILifecycle
|
35
|
+
|
36
|
+
contract ReleaseManager is
|
37
|
+
AccessManaged,
|
38
|
+
ILifecycle,
|
39
|
+
IRegistryLinked
|
38
40
|
{
|
39
41
|
using ObjectTypeLib for ObjectType;
|
40
42
|
|
41
|
-
|
43
|
+
uint256 public constant INITIAL_GIF_VERSION = 3;
|
44
|
+
|
45
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
|
42
46
|
event LogReleaseActivation(VersionPart version);
|
43
47
|
|
48
|
+
// constructor
|
49
|
+
error ErrorReleaseManagerNotRegistry(Registry registry);
|
50
|
+
|
44
51
|
// createNextRelease
|
45
52
|
error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
|
46
53
|
|
47
54
|
// prepareRelease
|
48
55
|
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
49
|
-
error
|
50
|
-
error
|
51
|
-
|
56
|
+
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
|
57
|
+
error ErrorReleaseManagerVersionMismatch(VersionPart expectedVersion, VersionPart providedVersion);
|
58
|
+
error ErrorReleaseManagerNoDomains(VersionPart version);
|
59
|
+
|
52
60
|
// register staking
|
53
|
-
error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
61
|
+
//error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
54
62
|
|
55
63
|
// registerService
|
64
|
+
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
56
65
|
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
66
|
+
error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
57
67
|
error ErrorReleaseManagerNotService(IService service);
|
58
68
|
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
59
69
|
|
60
70
|
// activateNextRelease
|
61
|
-
error
|
71
|
+
error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
|
62
72
|
error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
|
63
73
|
error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
|
64
74
|
error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
|
65
75
|
|
76
|
+
// disableRelease
|
77
|
+
error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
|
78
|
+
error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
|
79
|
+
|
66
80
|
// _verifyService
|
67
81
|
error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
|
68
82
|
error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
|
@@ -75,137 +89,127 @@ contract ReleaseManager is
|
|
75
89
|
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
76
90
|
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
77
91
|
|
78
|
-
//
|
79
|
-
error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
|
92
|
+
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
80
93
|
|
81
|
-
|
94
|
+
RegistryAdmin public immutable _admin;
|
95
|
+
address public immutable _releaseAccessManagerCodeAddress;
|
82
96
|
Registry public immutable _registry;
|
83
|
-
|
84
|
-
|
97
|
+
IRegisterable private _staking;
|
98
|
+
address private _stakingOwner;
|
85
99
|
|
86
|
-
|
100
|
+
// TODO remove once it's clear that release authority will always be registry authority
|
101
|
+
mapping(VersionPart version => address authority) internal _releaseAccessManager;
|
87
102
|
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
88
|
-
mapping(address registryService =>
|
103
|
+
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
104
|
+
|
105
|
+
mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
|
89
106
|
|
90
107
|
VersionPart immutable internal _initial;// first active version
|
91
108
|
VersionPart internal _latest; // latest active version
|
92
109
|
VersionPart internal _next; // version to create and activate
|
93
110
|
StateId internal _state; // current state of release manager
|
94
111
|
|
95
|
-
uint256 internal
|
96
|
-
|
112
|
+
uint256 internal _registeredServices;
|
113
|
+
uint256 internal _servicesToRegister;
|
97
114
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
address dipTokenAddress
|
102
|
-
)
|
103
|
-
AccessManaged(accessManager.authority())
|
115
|
+
// deployer of this contract must be gif admin
|
116
|
+
constructor(Registry registry)
|
117
|
+
AccessManaged(msg.sender)
|
104
118
|
{
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
119
|
+
// TODO move this part to RegistryLinked constructor
|
120
|
+
if(!_isRegistry(address(registry))) {
|
121
|
+
revert ErrorReleaseManagerNotRegistry(registry);
|
122
|
+
}
|
109
123
|
|
110
|
-
_registry =
|
111
|
-
|
112
|
-
|
113
|
-
dipTokenAddress);
|
124
|
+
_registry = registry;
|
125
|
+
setAuthority(_registry.getAuthority());
|
126
|
+
_admin = RegistryAdmin(_registry.getRegistryAdminAddress());
|
114
127
|
|
115
|
-
|
128
|
+
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
129
|
+
_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);
|
116
136
|
}
|
117
137
|
|
118
|
-
|
119
138
|
/// @dev skips previous release if was not activated
|
120
139
|
/// sets release manager into state SCHEDULED
|
121
140
|
function createNextRelease()
|
122
141
|
external
|
123
|
-
restricted // GIF_ADMIN_ROLE
|
124
|
-
returns(VersionPart
|
142
|
+
restricted() // GIF_ADMIN_ROLE
|
143
|
+
returns(VersionPart)
|
125
144
|
{
|
126
145
|
if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
|
127
146
|
revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
|
128
147
|
}
|
129
148
|
|
130
149
|
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
131
|
-
|
150
|
+
_servicesToRegister = 0;
|
151
|
+
_registeredServices = 0;
|
132
152
|
_state = SCHEDULED();
|
133
|
-
}
|
134
153
|
|
154
|
+
return _next;
|
155
|
+
}
|
135
156
|
|
136
157
|
function prepareNextRelease(
|
137
|
-
|
138
|
-
RoleId[][] memory serviceRoles,
|
139
|
-
RoleId[][] memory functionRoles,
|
140
|
-
bytes4[][][] memory selectors,
|
158
|
+
IServiceAuthorization serviceAuthorization,
|
141
159
|
bytes32 salt
|
142
160
|
)
|
143
161
|
external
|
144
162
|
restricted() // GIF_MANAGER_ROLE
|
145
163
|
returns(
|
146
|
-
address
|
164
|
+
address authority,
|
147
165
|
VersionPart version,
|
148
166
|
bytes32 releaseSalt
|
149
167
|
)
|
150
168
|
{
|
151
|
-
|
152
|
-
|
153
|
-
|
169
|
+
// TODO Any call to serviceAuthorization contract must be treated as a call to an external malicious contract
|
170
|
+
// How can wrong authorizations tamper the core, releases or instances?
|
171
|
+
(
|
172
|
+
VersionPart releaseVersion,
|
173
|
+
uint serviceDomainsCount
|
174
|
+
) = serviceAuthorization.getRelease();
|
154
175
|
|
155
|
-
|
156
|
-
|
176
|
+
// verify authorizaion contract release matches with expected version
|
177
|
+
if (releaseVersion != _next) {
|
178
|
+
revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
|
157
179
|
}
|
158
180
|
|
159
|
-
|
160
|
-
|
181
|
+
// sanity check to ensure service domain list is not empty
|
182
|
+
if (serviceDomainsCount == 0) {
|
183
|
+
revert ErrorReleaseManagerNoDomains(_next);
|
161
184
|
}
|
162
185
|
|
163
|
-
|
186
|
+
// verify release manager is in proper state to start deploying a next release
|
187
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
188
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
189
|
+
}
|
164
190
|
|
165
|
-
|
191
|
+
// verify prepareNextRelease is only called once per release
|
192
|
+
if(_servicesToRegister > 0) {
|
193
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
194
|
+
}
|
166
195
|
|
167
|
-
|
168
|
-
|
169
|
-
_releaseInfo[version].serviceRoles = serviceRoles;
|
170
|
-
_releaseInfo[version].functionRoles = functionRoles;
|
171
|
-
_releaseInfo[version].selectors = selectors;
|
172
|
-
_awaitingRegistration = addresses.length;
|
173
|
-
_state = DEPLOYING();
|
196
|
+
// store release specific service authorization
|
197
|
+
_serviceAuthorization[_next] = serviceAuthorization;
|
174
198
|
|
175
|
-
version = getNextVersion();
|
176
199
|
// ensures unique salt
|
177
200
|
releaseSalt = keccak256(
|
178
201
|
bytes.concat(
|
179
202
|
bytes32(version.toInt()),
|
180
203
|
salt));
|
181
204
|
|
182
|
-
|
183
|
-
AccessManagerUpgradeableInitializeable releaseAccessManager = AccessManagerUpgradeableInitializeable(releaseAccessManagerAddress);
|
184
|
-
|
185
|
-
_releaseAccessManager[version] = releaseAccessManager;
|
186
|
-
|
187
|
-
releaseAccessManager.initialize(address(this));
|
188
|
-
|
189
|
-
emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
|
190
|
-
}
|
205
|
+
authority = _admin.authority();
|
191
206
|
|
207
|
+
_releaseAccessManager[_next] = authority;
|
208
|
+
_servicesToRegister = serviceDomainsCount;
|
192
209
|
|
193
|
-
|
194
|
-
address stakingAddress,
|
195
|
-
address stakingOwner
|
196
|
-
)
|
197
|
-
external
|
198
|
-
restricted // GIF_ADMIN_ROLE
|
199
|
-
returns(NftId nftId)
|
200
|
-
{
|
201
|
-
// TODO add verify staking contract
|
202
|
-
_staking = IStaking(stakingAddress);
|
203
|
-
|
204
|
-
nftId = _registry.registerStaking(
|
205
|
-
stakingAddress,
|
206
|
-
stakingOwner);
|
210
|
+
_state = DEPLOYING();
|
207
211
|
|
208
|
-
|
212
|
+
emit LogReleaseCreation(version, releaseSalt, authority);
|
209
213
|
}
|
210
214
|
|
211
215
|
|
@@ -214,52 +218,52 @@ contract ReleaseManager is
|
|
214
218
|
restricted // GIF_MANAGER_ROLE
|
215
219
|
returns(NftId nftId)
|
216
220
|
{
|
221
|
+
// TODO is it usefull to check transition from A to A?
|
217
222
|
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
218
223
|
revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
|
219
224
|
}
|
220
225
|
|
226
|
+
if (_servicesToRegister == _registeredServices) {
|
227
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
228
|
+
}
|
229
|
+
|
221
230
|
(
|
222
231
|
IRegistry.ObjectInfo memory info,
|
223
232
|
ObjectType domain,
|
224
233
|
VersionPart version
|
225
234
|
) = _verifyService(service);
|
226
235
|
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
// TODO temp, while typescript addresses computation is not implemented
|
232
|
-
/*if(address(service) != serviceAddress) {
|
233
|
-
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
234
|
-
}*/
|
235
|
-
|
236
|
-
_setServiceAuthorizations(
|
237
|
-
_releaseAccessManager[version],
|
238
|
-
// TODO temp, while typescript addresses computation is not implemented
|
239
|
-
address(service),//serviceAddress,
|
240
|
-
_releaseInfo[version].serviceRoles[serviceIdx],
|
241
|
-
_releaseInfo[version].functionRoles[serviceIdx],
|
242
|
-
_releaseInfo[version].selectors[serviceIdx]);
|
243
|
-
|
244
|
-
// TODO decide for one of the approaches
|
245
|
-
// // service to service authorization
|
246
|
-
// ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
|
247
|
-
// for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
|
248
|
-
// _accessManager.setTargetFunctionRole(
|
249
|
-
// address(service),
|
250
|
-
// authz.authorizedSelectors[idx],
|
251
|
-
// authz.authorizedRole[idx]);
|
252
|
-
// }
|
253
|
-
|
254
|
-
_awaitingRegistration = serviceIdx;
|
255
|
-
_state = DEPLOYING();
|
236
|
+
ObjectType expectedDomain = _serviceAuthorization[version].getServiceDomains()[_registeredServices];
|
237
|
+
if (service.getDomain() != expectedDomain) {
|
238
|
+
revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, service.getDomain());
|
239
|
+
}
|
256
240
|
|
257
241
|
// checked in registry
|
258
242
|
_releaseInfo[version].domains.push(domain);
|
259
243
|
|
244
|
+
// register service with registry
|
260
245
|
nftId = _registry.registerService(info, version, domain);
|
246
|
+
_registeredServices++;
|
261
247
|
|
262
248
|
service.linkToRegisteredNftId();
|
249
|
+
|
250
|
+
// setup service authorization
|
251
|
+
_admin.authorizeService(
|
252
|
+
_serviceAuthorization[version],
|
253
|
+
service);
|
254
|
+
|
255
|
+
// TODO consider to extend this to REGISTRY
|
256
|
+
// special roles for registry/staking/pool service
|
257
|
+
if (domain == STAKING() || domain == POOL()) {
|
258
|
+
// TODO rename to grantServiceDomainRole()
|
259
|
+
_admin.grantServiceRoleForAllVersions(service, domain);
|
260
|
+
}
|
261
|
+
|
262
|
+
if (_registeredServices < _servicesToRegister) {
|
263
|
+
_state = DEPLOYING();
|
264
|
+
} else {
|
265
|
+
// TODO end state depends on (_awaitingRegistration == 0)
|
266
|
+
}
|
263
267
|
}
|
264
268
|
|
265
269
|
|
@@ -268,23 +272,21 @@ contract ReleaseManager is
|
|
268
272
|
restricted // GIF_ADMIN_ROLE
|
269
273
|
{
|
270
274
|
if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
|
271
|
-
revert
|
275
|
+
revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
|
272
276
|
}
|
273
277
|
|
278
|
+
// release fully deployed
|
274
279
|
VersionPart version = _next;
|
275
|
-
|
280
|
+
if(_registeredServices < _servicesToRegister) {
|
281
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
|
282
|
+
}
|
276
283
|
|
277
|
-
// release exists, registry service
|
278
|
-
|
284
|
+
// release exists, registry service MUST exist
|
285
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
279
286
|
if(service == address(0)) {
|
280
287
|
revert ErrorReleaseManagerReleaseNotCreated(version);
|
281
288
|
}
|
282
289
|
|
283
|
-
// release fully deployed
|
284
|
-
if(_awaitingRegistration > 0) {
|
285
|
-
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
286
|
-
}
|
287
|
-
|
288
290
|
// release is not activated
|
289
291
|
if(_releaseInfo[version].activatedAt.gtz()) {
|
290
292
|
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
@@ -293,12 +295,51 @@ contract ReleaseManager is
|
|
293
295
|
_latest = version;
|
294
296
|
_state = ACTIVE();
|
295
297
|
|
296
|
-
|
298
|
+
_releaseVersionByAddress[service] = version;
|
297
299
|
_releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
|
298
300
|
|
299
301
|
emit LogReleaseActivation(version);
|
300
302
|
}
|
301
303
|
|
304
|
+
// release becomes disabled after delay expiration (can be reenabled before that)
|
305
|
+
function disableRelease(VersionPart version, Seconds disableDelay)
|
306
|
+
external
|
307
|
+
restricted // GIF_ADMIN_ROLE
|
308
|
+
{
|
309
|
+
// release was activated
|
310
|
+
if(_releaseInfo[version].activatedAt.eqz()) {
|
311
|
+
revert ErrorReleaseManagerReleaseNotActivated(version);
|
312
|
+
}
|
313
|
+
|
314
|
+
// release not disabled already
|
315
|
+
if(_releaseInfo[version].disabledAt.gtz()) {
|
316
|
+
revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
|
317
|
+
}
|
318
|
+
|
319
|
+
disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
|
320
|
+
|
321
|
+
// TODO come up with a substitute
|
322
|
+
// _releaseAccessManager[version].disable(disableDelay);
|
323
|
+
|
324
|
+
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
|
325
|
+
}
|
326
|
+
|
327
|
+
function enableRelease(VersionPart version)
|
328
|
+
external
|
329
|
+
restricted // GIF_ADMIN_ROLE
|
330
|
+
{
|
331
|
+
// release was disabled
|
332
|
+
//if(_releaseInfo[version].disabledAt.eqz()) {
|
333
|
+
// revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
|
334
|
+
//}
|
335
|
+
|
336
|
+
// reverts if disable delay expired
|
337
|
+
// TODO come up with a substitute
|
338
|
+
// _releaseAccessManager[version].enable();
|
339
|
+
|
340
|
+
_releaseInfo[version].disabledAt = zeroTimestamp();
|
341
|
+
}
|
342
|
+
|
302
343
|
//--- view functions ----------------------------------------------------//
|
303
344
|
|
304
345
|
function predictDeterministicAddress(
|
@@ -310,17 +351,14 @@ contract ReleaseManager is
|
|
310
351
|
}
|
311
352
|
|
312
353
|
function isActiveRegistryService(address service) external view returns(bool) {
|
313
|
-
|
354
|
+
VersionPart version = _releaseVersionByAddress[service];
|
355
|
+
return isActiveRelease(version);
|
314
356
|
}
|
315
357
|
|
316
|
-
function
|
358
|
+
function isActiveRelease(VersionPart version) public view returns(bool) {
|
317
359
|
return _releaseInfo[version].activatedAt.gtz();
|
318
360
|
}
|
319
361
|
|
320
|
-
function getRegistryAddress() external view returns(address) {
|
321
|
-
return (address(_registry));
|
322
|
-
}
|
323
|
-
|
324
362
|
function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
|
325
363
|
return _releaseInfo[version];
|
326
364
|
}
|
@@ -342,18 +380,30 @@ contract ReleaseManager is
|
|
342
380
|
}
|
343
381
|
|
344
382
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
345
|
-
return
|
383
|
+
return _servicesToRegister - _registeredServices;
|
384
|
+
}
|
385
|
+
|
386
|
+
// TODO cleanup
|
387
|
+
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
|
388
|
+
// return _releaseAccessManager[version];
|
346
389
|
}
|
347
390
|
|
348
|
-
|
349
|
-
|
391
|
+
// TODO token registry knows nothing about adfmin, only registry
|
392
|
+
function getRegistryAdmin() external view returns (address) {
|
393
|
+
return address(_admin);
|
394
|
+
}
|
395
|
+
|
396
|
+
//--- IRegistryLinked ------------------------------------------------------//
|
397
|
+
|
398
|
+
function getRegistry() external view returns (IRegistry) {
|
399
|
+
return _registry;
|
350
400
|
}
|
351
401
|
|
352
402
|
//--- ILifecycle -----------------------------------------------------------//
|
353
403
|
|
354
|
-
function hasLifecycle(ObjectType objectType) external
|
404
|
+
function hasLifecycle(ObjectType objectType) external pure returns (bool) { return objectType == RELEASE(); }
|
355
405
|
|
356
|
-
function getInitialState(ObjectType objectType) public
|
406
|
+
function getInitialState(ObjectType objectType) public pure returns (StateId stateId) {
|
357
407
|
if (objectType == RELEASE()) {
|
358
408
|
stateId = INITIAL();
|
359
409
|
}
|
@@ -365,7 +415,7 @@ contract ReleaseManager is
|
|
365
415
|
StateId toId
|
366
416
|
)
|
367
417
|
public
|
368
|
-
|
418
|
+
pure
|
369
419
|
returns (bool isValid)
|
370
420
|
{
|
371
421
|
if (objectType != RELEASE()) { return false; }
|
@@ -375,6 +425,7 @@ contract ReleaseManager is
|
|
375
425
|
if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
|
376
426
|
if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
|
377
427
|
if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
|
428
|
+
// TODO active -> scheduled missing, add tests to cover this and more scenarios (#358)
|
378
429
|
|
379
430
|
return false;
|
380
431
|
}
|
@@ -383,6 +434,7 @@ contract ReleaseManager is
|
|
383
434
|
|
384
435
|
function _verifyService(IService service)
|
385
436
|
internal
|
437
|
+
view
|
386
438
|
returns(
|
387
439
|
IRegistry.ObjectInfo memory serviceInfo,
|
388
440
|
ObjectType serviceDomain,
|
@@ -456,75 +508,20 @@ contract ReleaseManager is
|
|
456
508
|
}
|
457
509
|
}
|
458
510
|
|
511
|
+
/// @dev returns true iff a the address passes some simple proxy tests.
|
512
|
+
function _isRegistry(address registryAddress) internal view returns (bool) {
|
459
513
|
|
460
|
-
|
461
|
-
address
|
462
|
-
|
463
|
-
RoleId[][] memory functionRoles,
|
464
|
-
bytes4[][][] memory selectors
|
465
|
-
)
|
466
|
-
internal
|
467
|
-
view
|
468
|
-
{
|
469
|
-
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
470
|
-
{
|
471
|
-
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
472
|
-
{
|
473
|
-
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
474
|
-
if(role == ADMIN_ROLE()) {
|
475
|
-
revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
|
476
|
-
}
|
477
|
-
}
|
514
|
+
// zero address is certainly not registry
|
515
|
+
if (registryAddress == address(0)) {
|
516
|
+
return false;
|
478
517
|
}
|
479
|
-
|
480
|
-
//
|
481
|
-
//
|
482
|
-
|
483
|
-
|
484
|
-
}
|
485
|
-
|
486
|
-
function _setServiceAuthorizations(
|
487
|
-
IAccessManager accessManager,
|
488
|
-
address serviceAddress,
|
489
|
-
RoleId[] memory serviceRoles,
|
490
|
-
RoleId[] memory functionRoles,
|
491
|
-
bytes4[][] memory selectors
|
492
|
-
)
|
493
|
-
internal
|
494
|
-
{
|
495
|
-
for(uint idx = 0; idx < functionRoles.length; idx++)
|
496
|
-
{
|
497
|
-
accessManager.setTargetFunctionRole(
|
498
|
-
serviceAddress,
|
499
|
-
selectors[idx],
|
500
|
-
functionRoles[idx].toInt());
|
501
|
-
|
502
|
-
// TODO check/figure out which approach to take
|
503
|
-
// ObjectType domain = config[idx].serviceDomain;
|
504
|
-
// // not "registry service" / zero domain
|
505
|
-
// if(
|
506
|
-
// domain == REGISTRY() ||
|
507
|
-
// domain.eqz()
|
508
|
-
// ) { revert ConfigServiceDomainInvalid(idx, domain); }
|
509
|
-
|
510
|
-
// bytes4[] memory selectors = config[idx].authorizedSelectors;
|
511
|
-
|
512
|
-
// // TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
|
513
|
-
// // no overwrite
|
514
|
-
// if(_selectors[version][domain].length > 0) {
|
515
|
-
// revert SelectorAlreadyExists(version, domain);
|
516
|
-
// }
|
517
|
-
|
518
|
-
// _selectors[version][domain] = selectors;
|
519
|
-
// _release[version].domains.push(domain);
|
518
|
+
// TODO try catch and return false in case of revert
|
519
|
+
// a just panic
|
520
|
+
// check if contract returns a zero nft id for its own address
|
521
|
+
if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
|
522
|
+
return false;
|
520
523
|
}
|
521
524
|
|
522
|
-
|
523
|
-
{
|
524
|
-
accessManager.grantRole(
|
525
|
-
serviceRoles[idx].toInt(),
|
526
|
-
serviceAddress,
|
527
|
-
0);
|
528
|
-
}
|
525
|
+
return true;
|
529
526
|
}
|
530
527
|
}
|