@etherisc/gif-next 0.0.2-7ca6cd9-950 → 0.0.2-7dc3cd3-858
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1248 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
- package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.json +1385 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +171 -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 +140 -95
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +48 -40
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +45 -16
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -108
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +59 -79
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +142 -40
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +73 -141
- package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.json +1616 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +110 -76
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +205 -103
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +32 -32
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +73 -123
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -78
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +66 -29
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +27 -15
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +78 -49
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -25
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +13 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +13 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +62 -41
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +25 -21
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -37
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +27 -19
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +106 -69
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +47 -35
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +84 -47
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +36 -24
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +92 -63
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +40 -32
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +13 -153
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +21 -13
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +0 -44
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +20 -64
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1487 -153
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -14
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +20 -8
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +93 -245
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +195 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +82 -85
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +35 -43
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +13 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +2 -2
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +13 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +44 -28
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -84
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +23 -39
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +92 -73
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +33 -41
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +186 -114
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +18 -18
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -2
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/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/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/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/VersionPartLib.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +593 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/authorization/IAccessAdmin.sol +136 -0
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/authorization/IServiceAuthorization.sol +35 -0
- package/contracts/authorization/InstanceAdmin.sol +108 -0
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/authorization/ServiceAuthorization.sol +86 -0
- package/contracts/distribution/BasicDistribution.sol +149 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
- package/contracts/distribution/Distribution.sol +126 -104
- package/contracts/distribution/DistributionService.sol +13 -9
- package/contracts/distribution/IDistributionComponent.sol +17 -35
- package/contracts/distribution/IDistributionService.sol +5 -1
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +28 -18
- package/contracts/instance/Instance.sol +106 -88
- package/contracts/instance/InstanceAdminNew.sol +261 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +209 -0
- package/contracts/instance/InstanceReader.sol +24 -9
- package/contracts/instance/InstanceService.sol +143 -75
- package/contracts/instance/InstanceStore.sol +9 -17
- package/contracts/instance/base/BalanceStore.sol +11 -6
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectManager.sol +7 -10
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/Oracle.sol +61 -49
- package/contracts/oracle/OracleService.sol +5 -4
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +49 -0
- package/contracts/pool/BundleService.sol +19 -19
- package/contracts/pool/IPoolComponent.sol +0 -60
- package/contracts/pool/Pool.sol +143 -131
- package/contracts/pool/PoolService.sol +7 -8
- package/contracts/product/ApplicationService.sol +5 -5
- package/contracts/product/BasicProduct.sol +82 -0
- package/contracts/product/BasicProductAuthorization.sol +40 -0
- package/contracts/product/ClaimService.sol +5 -5
- package/contracts/product/IProductComponent.sol +6 -9
- package/contracts/product/PolicyService.sol +5 -5
- package/contracts/product/PricingService.sol +4 -5
- package/contracts/product/Product.sol +103 -88
- package/contracts/product/ProductService.sol +5 -5
- package/contracts/registry/IRegistry.sol +5 -8
- package/contracts/registry/Registry.sol +6 -4
- package/contracts/registry/RegistryAdmin.sol +273 -147
- package/contracts/registry/RegistryService.sol +5 -5
- package/contracts/registry/RegistryServiceManager.sol +0 -5
- package/contracts/registry/ReleaseManager.sol +102 -184
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/shared/ComponentService.sol +22 -61
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
- package/contracts/shared/IService.sol +7 -0
- package/contracts/shared/InstanceLinkedComponent.sol +26 -19
- package/contracts/shared/Service.sol +27 -21
- package/contracts/staking/IStakingService.sol +11 -7
- package/contracts/staking/StakeManagerLib.sol +52 -0
- package/contracts/staking/Staking.sol +58 -96
- package/contracts/staking/StakingService.sol +61 -56
- package/contracts/staking/StakingServiceManager.sol +0 -1
- package/contracts/staking/StakingStore.sol +79 -38
- package/contracts/type/ObjectType.sol +169 -62
- package/contracts/type/RoleId.sol +103 -75
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/String.sol +53 -0
- package/contracts/type/UFixed.sol +6 -0
- package/package.json +4 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +0 -708
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/contracts/instance/InstanceAdmin.sol +0 -331
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerCustom.sol +0 -736
- package/contracts/shared/AccessManagerExtended.sol +0 -470
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
@@ -10,7 +10,7 @@ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
|
10
10
|
|
11
11
|
import {NftId} from "../type/NftId.sol";
|
12
12
|
import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
|
-
import {ObjectType, ObjectTypeLib, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
13
|
+
import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
|
14
14
|
import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
|
15
15
|
import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
|
16
16
|
import {Seconds, SecondsLib} from "../type/Seconds.sol";
|
@@ -18,7 +18,6 @@ import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.so
|
|
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,12 +25,14 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
|
|
26
25
|
import {IRegistry} from "./IRegistry.sol";
|
27
26
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
28
27
|
import {IRegistryService} from "./IRegistryService.sol";
|
28
|
+
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
29
|
+
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
29
30
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
30
31
|
import {Registry} from "./Registry.sol";
|
31
32
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
32
|
-
import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
|
33
|
-
|
34
33
|
|
34
|
+
// TODO rename to something that does not end with 'Manager'
|
35
|
+
// everywhere else *Manager points to an upgradeable contract
|
35
36
|
contract ReleaseManager is
|
36
37
|
AccessManaged,
|
37
38
|
ILifecycle,
|
@@ -41,7 +42,7 @@ contract ReleaseManager is
|
|
41
42
|
|
42
43
|
uint256 public constant INITIAL_GIF_VERSION = 3;
|
43
44
|
|
44
|
-
event LogReleaseCreation(VersionPart version, bytes32 salt,
|
45
|
+
event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
|
45
46
|
event LogReleaseActivation(VersionPart version);
|
46
47
|
|
47
48
|
// constructor
|
@@ -53,13 +54,16 @@ contract ReleaseManager is
|
|
53
54
|
// prepareRelease
|
54
55
|
error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
|
55
56
|
error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
|
56
|
-
|
57
|
+
error ErrorReleaseManagerVersionMismatch(VersionPart expectedVersion, VersionPart providedVersion);
|
58
|
+
error ErrorReleaseManagerNoDomains(VersionPart version);
|
59
|
+
|
57
60
|
// register staking
|
58
61
|
//error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
|
59
62
|
|
60
63
|
// registerService
|
61
64
|
error ErrorReleaseManagerNoServiceRegistrationExpected();
|
62
65
|
error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
|
66
|
+
error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
|
63
67
|
error ErrorReleaseManagerNotService(IService service);
|
64
68
|
error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
|
65
69
|
|
@@ -85,28 +89,30 @@ contract ReleaseManager is
|
|
85
89
|
error ErrorReleaseManagerServiceSelfRegistration(IService service);
|
86
90
|
error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
|
87
91
|
|
88
|
-
// _verifyReleaseAuthorizations
|
89
|
-
error ErrorReleaseManagerReleaseEmpty();
|
90
|
-
error ErrorReleaseManagerReleaseServiceRoleInvalid(uint serviceIdx, address service, RoleId role);
|
91
|
-
|
92
92
|
Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
|
93
93
|
|
94
94
|
RegistryAdmin public immutable _admin;
|
95
|
-
address public immutable _releaseAccessManagerCodeAddress;
|
96
95
|
Registry public immutable _registry;
|
97
96
|
IRegisterable private _staking;
|
98
97
|
address private _stakingOwner;
|
99
98
|
|
100
|
-
mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
|
101
99
|
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
100
|
+
mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
|
101
|
+
|
102
|
+
// TODO check where/why this is used
|
102
103
|
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
103
104
|
|
105
|
+
// TODO remove once it's clear that release authority will always be registry authority
|
106
|
+
mapping(VersionPart version => address authority) internal _releaseAccessManager;
|
107
|
+
|
108
|
+
|
104
109
|
VersionPart immutable internal _initial;// first active version
|
105
110
|
VersionPart internal _latest; // latest active version
|
106
111
|
VersionPart internal _next; // version to create and activate
|
107
112
|
StateId internal _state; // current state of release manager
|
108
113
|
|
109
|
-
uint256 internal
|
114
|
+
uint256 internal _registeredServices;
|
115
|
+
uint256 internal _servicesToRegister;
|
110
116
|
|
111
117
|
// deployer of this contract must be gif admin
|
112
118
|
constructor(Registry registry)
|
@@ -124,11 +130,6 @@ contract ReleaseManager is
|
|
124
130
|
_initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
|
125
131
|
_next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
|
126
132
|
_state = getInitialState(RELEASE());
|
127
|
-
|
128
|
-
AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
|
129
|
-
masterReleaseAccessManager.initialize(_registry.NFT_LOCK_ADDRESS(), VersionLib.toVersionPart(0));
|
130
|
-
//masterReleaseAccessManager.disable();
|
131
|
-
_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
|
132
133
|
}
|
133
134
|
|
134
135
|
/// @dev skips previous release if was not activated
|
@@ -143,32 +144,55 @@ contract ReleaseManager is
|
|
143
144
|
}
|
144
145
|
|
145
146
|
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
146
|
-
|
147
|
+
_servicesToRegister = 0;
|
148
|
+
_registeredServices = 0;
|
147
149
|
_state = SCHEDULED();
|
148
150
|
|
149
151
|
return _next;
|
150
152
|
}
|
151
153
|
|
152
|
-
// TODO order of events
|
153
154
|
function prepareNextRelease(
|
154
|
-
|
155
|
-
string[] memory names,
|
156
|
-
RoleId[][] memory serviceRoles,
|
157
|
-
string[][] memory serviceRoleNames,
|
158
|
-
RoleId[][] memory functionRoles,
|
159
|
-
string[][] memory functionRoleNames,
|
160
|
-
bytes4[][][] memory selectors,
|
155
|
+
IServiceAuthorization serviceAuthorization,
|
161
156
|
bytes32 salt
|
162
157
|
)
|
163
158
|
external
|
164
159
|
restricted() // GIF_MANAGER_ROLE
|
165
160
|
returns(
|
166
|
-
address
|
161
|
+
address authority,
|
167
162
|
VersionPart version,
|
168
163
|
bytes32 releaseSalt
|
169
164
|
)
|
170
165
|
{
|
171
|
-
|
166
|
+
// verify release manager is in proper state to start deploying a next release
|
167
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
168
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
169
|
+
}
|
170
|
+
|
171
|
+
// verify prepareNextRelease is only called once per release
|
172
|
+
if(_servicesToRegister > 0) {
|
173
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
174
|
+
}
|
175
|
+
|
176
|
+
// verify authorizaion contract release matches with expected version
|
177
|
+
VersionPart releaseVersion = serviceAuthorization.getRelease();
|
178
|
+
if (releaseVersion != _next) {
|
179
|
+
revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
|
180
|
+
}
|
181
|
+
|
182
|
+
// sanity check to ensure service domain list is not empty
|
183
|
+
uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
184
|
+
if (serviceDomainsCount == 0) {
|
185
|
+
revert ErrorReleaseManagerNoDomains(_next);
|
186
|
+
}
|
187
|
+
|
188
|
+
_state = DEPLOYING();
|
189
|
+
_servicesToRegister = serviceDomainsCount;
|
190
|
+
|
191
|
+
// store release specific service authorization
|
192
|
+
authority = _admin.authority();
|
193
|
+
_serviceAuthorization[_next] = serviceAuthorization;
|
194
|
+
// TODO refactor: authority no longer release specific
|
195
|
+
_releaseAccessManager[_next] = authority;
|
172
196
|
|
173
197
|
// ensures unique salt
|
174
198
|
releaseSalt = keccak256(
|
@@ -176,34 +200,7 @@ contract ReleaseManager is
|
|
176
200
|
bytes32(version.toInt()),
|
177
201
|
salt));
|
178
202
|
|
179
|
-
|
180
|
-
AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
|
181
|
-
releaseAccessManager.initialize(address(this), version);
|
182
|
-
|
183
|
-
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
184
|
-
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
185
|
-
}
|
186
|
-
|
187
|
-
_verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
|
188
|
-
|
189
|
-
if(_awaitingRegistration > 0) {
|
190
|
-
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
191
|
-
}
|
192
|
-
// TODO instead of copying just set ServiceAuthorizationsLib for release and array of domains???
|
193
|
-
_releaseInfo[version].version = version;
|
194
|
-
_releaseInfo[version].salt = releaseSalt;
|
195
|
-
_releaseInfo[version].addresses = addresses;
|
196
|
-
_releaseInfo[version].names = names;
|
197
|
-
_releaseInfo[version].serviceRoles = serviceRoles;
|
198
|
-
_releaseInfo[version].serviceRoleNames = serviceRoleNames;
|
199
|
-
_releaseInfo[version].functionRoles = functionRoles;
|
200
|
-
_releaseInfo[version].functionRoleNames = functionRoleNames;
|
201
|
-
_releaseInfo[version].selectors = selectors;
|
202
|
-
_awaitingRegistration = addresses.length;
|
203
|
-
_state = DEPLOYING();
|
204
|
-
_releaseAccessManager[version] = releaseAccessManager;
|
205
|
-
|
206
|
-
emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
|
203
|
+
emit LogReleaseCreation(version, releaseSalt, authority);
|
207
204
|
}
|
208
205
|
|
209
206
|
|
@@ -212,59 +209,49 @@ contract ReleaseManager is
|
|
212
209
|
restricted // GIF_MANAGER_ROLE
|
213
210
|
returns(NftId nftId)
|
214
211
|
{
|
212
|
+
// TODO is it usefull to check transition from A to A?
|
215
213
|
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
216
214
|
revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
|
217
215
|
}
|
218
216
|
|
217
|
+
if (_servicesToRegister == _registeredServices) {
|
218
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
219
|
+
}
|
220
|
+
|
219
221
|
(
|
220
222
|
IRegistry.ObjectInfo memory info,
|
221
223
|
ObjectType domain,
|
222
224
|
VersionPart version
|
223
225
|
) = _verifyService(service);
|
224
226
|
|
225
|
-
|
226
|
-
if (
|
227
|
-
revert
|
227
|
+
ObjectType expectedDomain = _serviceAuthorization[version].getServiceDomains()[_registeredServices];
|
228
|
+
if (service.getDomain() != expectedDomain) {
|
229
|
+
revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, service.getDomain());
|
228
230
|
}
|
229
231
|
|
230
|
-
|
231
|
-
address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
|
232
|
-
// TODO temp, while typescript addresses computation is not implemented
|
233
|
-
/*if(address(service) != serviceAddress) {
|
234
|
-
revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
|
235
|
-
}*/
|
236
|
-
|
237
|
-
_setServiceAuthorizations(
|
238
|
-
_releaseAccessManager[version],
|
239
|
-
// TODO temp, while typescript addresses computation is not implemented
|
240
|
-
address(service),//serviceAddress,
|
241
|
-
_releaseInfo[version].names[serviceIdx],
|
242
|
-
_releaseInfo[version].serviceRoles[serviceIdx],
|
243
|
-
_releaseInfo[version].serviceRoleNames[serviceIdx],
|
244
|
-
_releaseInfo[version].functionRoles[serviceIdx],
|
245
|
-
_releaseInfo[version].functionRoleNames[serviceIdx],
|
246
|
-
_releaseInfo[version].selectors[serviceIdx]);
|
247
|
-
|
248
|
-
// TODO decide for one of the approaches
|
249
|
-
// // service to service authorization
|
250
|
-
// ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
|
251
|
-
// for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
|
252
|
-
// _accessManager.setTargetFunctionRole(
|
253
|
-
// address(service),
|
254
|
-
// authz.authorizedSelectors[idx],
|
255
|
-
// authz.authorizedRole[idx]);
|
256
|
-
// }
|
257
|
-
|
258
|
-
_awaitingRegistration = serviceIdx;
|
259
|
-
// TODO end state depends on (_awaitingRegistration == 0)
|
260
|
-
_state = DEPLOYING();
|
261
|
-
|
262
|
-
// checked in registry
|
263
|
-
_releaseInfo[version].domains.push(domain);
|
264
|
-
|
232
|
+
// register service with registry
|
265
233
|
nftId = _registry.registerService(info, version, domain);
|
234
|
+
_registeredServices++;
|
266
235
|
|
267
236
|
service.linkToRegisteredNftId();
|
237
|
+
|
238
|
+
// setup service authorization
|
239
|
+
_admin.authorizeService(
|
240
|
+
_serviceAuthorization[version],
|
241
|
+
service);
|
242
|
+
|
243
|
+
// TODO consider to extend this to REGISTRY
|
244
|
+
// special roles for registry/staking/pool service
|
245
|
+
if (domain == STAKING() || domain == POOL()) {
|
246
|
+
// TODO rename to grantServiceDomainRole()
|
247
|
+
_admin.grantServiceRoleForAllVersions(service, domain);
|
248
|
+
}
|
249
|
+
|
250
|
+
if (_registeredServices < _servicesToRegister) {
|
251
|
+
_state = DEPLOYING();
|
252
|
+
} else {
|
253
|
+
// TODO end state depends on (_awaitingRegistration == 0)
|
254
|
+
}
|
268
255
|
}
|
269
256
|
|
270
257
|
|
@@ -276,20 +263,18 @@ contract ReleaseManager is
|
|
276
263
|
revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
|
277
264
|
}
|
278
265
|
|
266
|
+
// release fully deployed
|
279
267
|
VersionPart version = _next;
|
280
|
-
|
268
|
+
if(_registeredServices < _servicesToRegister) {
|
269
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
|
270
|
+
}
|
281
271
|
|
282
|
-
// release exists, registry service
|
283
|
-
|
272
|
+
// release exists, registry service MUST exist
|
273
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
284
274
|
if(service == address(0)) {
|
285
275
|
revert ErrorReleaseManagerReleaseNotCreated(version);
|
286
276
|
}
|
287
277
|
|
288
|
-
// release fully deployed
|
289
|
-
if(_awaitingRegistration > 0) {
|
290
|
-
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
291
|
-
}
|
292
|
-
|
293
278
|
// release is not activated
|
294
279
|
if(_releaseInfo[version].activatedAt.gtz()) {
|
295
280
|
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
@@ -321,7 +306,8 @@ contract ReleaseManager is
|
|
321
306
|
|
322
307
|
disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
|
323
308
|
|
324
|
-
|
309
|
+
// TODO come up with a substitute
|
310
|
+
// _releaseAccessManager[version].disable(disableDelay);
|
325
311
|
|
326
312
|
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
|
327
313
|
}
|
@@ -336,7 +322,8 @@ contract ReleaseManager is
|
|
336
322
|
//}
|
337
323
|
|
338
324
|
// reverts if disable delay expired
|
339
|
-
|
325
|
+
// TODO come up with a substitute
|
326
|
+
// _releaseAccessManager[version].enable();
|
340
327
|
|
341
328
|
_releaseInfo[version].disabledAt = zeroTimestamp();
|
342
329
|
}
|
@@ -381,13 +368,18 @@ contract ReleaseManager is
|
|
381
368
|
}
|
382
369
|
|
383
370
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
384
|
-
return
|
371
|
+
return _servicesToRegister - _registeredServices;
|
385
372
|
}
|
386
373
|
|
387
|
-
function
|
388
|
-
|
374
|
+
function getServiceAuthorization(VersionPart version)
|
375
|
+
external
|
376
|
+
view
|
377
|
+
returns (IServiceAuthorization serviceAuthorization)
|
378
|
+
{
|
379
|
+
return _serviceAuthorization[version];
|
389
380
|
}
|
390
|
-
|
381
|
+
|
382
|
+
// TODO token registry knows nothing about adfmin, only registry
|
391
383
|
function getRegistryAdmin() external view returns (address) {
|
392
384
|
return address(_admin);
|
393
385
|
}
|
@@ -507,81 +499,7 @@ contract ReleaseManager is
|
|
507
499
|
}
|
508
500
|
}
|
509
501
|
|
510
|
-
|
511
|
-
function _verifyReleaseAuthorizations(
|
512
|
-
address[] memory serviceAddress,
|
513
|
-
RoleId[][] memory serviceRoles,
|
514
|
-
RoleId[][] memory functionRoles,
|
515
|
-
bytes4[][][] memory selectors
|
516
|
-
)
|
517
|
-
internal
|
518
|
-
pure
|
519
|
-
{
|
520
|
-
if(serviceAddress.length == 0) {
|
521
|
-
revert ErrorReleaseManagerReleaseEmpty();
|
522
|
-
}
|
523
|
-
|
524
|
-
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
525
|
-
{
|
526
|
-
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
527
|
-
{
|
528
|
-
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
529
|
-
if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
|
530
|
-
revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
|
531
|
-
}
|
532
|
-
}
|
533
|
-
}
|
534
|
-
|
535
|
-
// TODO no duplicate service "domain" role per release
|
536
|
-
// TODO no duplicate service roles per service
|
537
|
-
// TODO no duplicate service function roles per service
|
538
|
-
// TODO no duplicate service function selectors per service
|
539
|
-
}
|
540
|
-
|
541
|
-
function _setServiceAuthorizations(
|
542
|
-
AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
|
543
|
-
address serviceAddress,
|
544
|
-
string memory serviceName,
|
545
|
-
RoleId[] memory serviceRoles,
|
546
|
-
string[] memory serviceRoleNames,
|
547
|
-
RoleId[] memory functionRoles,
|
548
|
-
string[] memory functionRoleNames,
|
549
|
-
bytes4[][] memory selectors
|
550
|
-
)
|
551
|
-
internal
|
552
|
-
{
|
553
|
-
accessManager.createTarget(serviceAddress, serviceName);
|
554
|
-
|
555
|
-
for(uint idx = 0; idx < functionRoles.length; idx++)
|
556
|
-
{
|
557
|
-
uint64 roleInt = functionRoles[idx].toInt();
|
558
|
-
|
559
|
-
if(!accessManager.isRoleExists(roleInt)) {
|
560
|
-
accessManager.createRole(roleInt, functionRoleNames[idx]);
|
561
|
-
}
|
562
|
-
|
563
|
-
accessManager.setTargetFunctionRole(
|
564
|
-
serviceAddress,
|
565
|
-
selectors[idx],
|
566
|
-
functionRoles[idx].toInt());
|
567
|
-
}
|
568
|
-
|
569
|
-
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
570
|
-
{
|
571
|
-
uint64 roleInt = serviceRoles[idx].toInt();
|
572
|
-
|
573
|
-
if(!accessManager.isRoleExists(roleInt)) {
|
574
|
-
accessManager.createRole(roleInt, serviceRoleNames[idx]);
|
575
|
-
}
|
576
|
-
|
577
|
-
accessManager.grantRole(
|
578
|
-
serviceRoles[idx].toInt(),
|
579
|
-
serviceAddress,
|
580
|
-
0);
|
581
|
-
}
|
582
|
-
}
|
583
|
-
|
584
|
-
// returns true iff a the address passes some simple proxy tests.
|
502
|
+
/// @dev returns true iff a the address passes some simple proxy tests.
|
585
503
|
function _isRegistry(address registryAddress) internal view returns (bool) {
|
586
504
|
|
587
505
|
// zero address is certainly not registry
|
@@ -0,0 +1,200 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {
|
5
|
+
ALL, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE
|
6
|
+
} from "../../contracts/type/ObjectType.sol";
|
7
|
+
|
8
|
+
import {ComponentService} from "../shared/ComponentService.sol";
|
9
|
+
import {IAccess} from "../authorization/IAccess.sol";
|
10
|
+
import {IBundleService} from "../pool/IBundleService.sol";
|
11
|
+
import {IDistributionService} from "../distribution/IDistributionService.sol";
|
12
|
+
import {InstanceService} from "../instance/InstanceService.sol";
|
13
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
14
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
15
|
+
import {IStakingService} from "../staking/IStakingService.sol";
|
16
|
+
import {IRegistryService} from "./IRegistryService.sol";
|
17
|
+
import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
|
18
|
+
|
19
|
+
|
20
|
+
contract ServiceAuthorizationV3
|
21
|
+
is ServiceAuthorization
|
22
|
+
{
|
23
|
+
|
24
|
+
constructor(string memory commitHash)
|
25
|
+
ServiceAuthorization(commitHash)
|
26
|
+
{}
|
27
|
+
|
28
|
+
function _setupDomains()
|
29
|
+
internal
|
30
|
+
override
|
31
|
+
{
|
32
|
+
_authorizeDomain(REGISTRY(), address(1));
|
33
|
+
_authorizeDomain(STAKING(), address(2));
|
34
|
+
_authorizeDomain(INSTANCE(), address(3));
|
35
|
+
_authorizeDomain(COMPONENT(), address(4));
|
36
|
+
_authorizeDomain(DISTRIBUTION(), address(5));
|
37
|
+
_authorizeDomain(PRICE(), address(6));
|
38
|
+
_authorizeDomain(BUNDLE(), address(7));
|
39
|
+
_authorizeDomain(POOL(), address(8));
|
40
|
+
_authorizeDomain(ORACLE(), address(9));
|
41
|
+
_authorizeDomain(PRODUCT(), address(10));
|
42
|
+
_authorizeDomain(CLAIM(), address(11));
|
43
|
+
_authorizeDomain(APPLICATION(), address(12));
|
44
|
+
_authorizeDomain(POLICY(), address(13));
|
45
|
+
}
|
46
|
+
|
47
|
+
|
48
|
+
function _setupDomainAuthorizations()
|
49
|
+
internal
|
50
|
+
override
|
51
|
+
{
|
52
|
+
_setupIRegistryServiceAuthorization();
|
53
|
+
_setupStakingServiceAuthorization();
|
54
|
+
_setupInstanceServiceAuthorization();
|
55
|
+
_setupComponentServiceAuthorization();
|
56
|
+
_setupDistributionServiceAuthorization();
|
57
|
+
_setupPoolServiceAuthorization();
|
58
|
+
_setupBundleServiceAuthorization();
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
/// @dev registry service authorization.
|
63
|
+
/// authorized functions MUST be implemented with a restricted modifier
|
64
|
+
function _setupIRegistryServiceAuthorization()
|
65
|
+
internal
|
66
|
+
{
|
67
|
+
IAccess.FunctionInfo[] storage functions;
|
68
|
+
|
69
|
+
functions = _authorizeForService(REGISTRY(), APPLICATION());
|
70
|
+
_authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
|
71
|
+
|
72
|
+
functions = _authorizeForService(REGISTRY(), POOL());
|
73
|
+
_authorize(functions, IRegistryService.registerPool.selector, "registerPool");
|
74
|
+
|
75
|
+
functions = _authorizeForService(REGISTRY(), BUNDLE());
|
76
|
+
_authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
|
77
|
+
|
78
|
+
functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
|
79
|
+
_authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
|
80
|
+
_authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
|
81
|
+
|
82
|
+
functions = _authorizeForService(REGISTRY(), COMPONENT());
|
83
|
+
_authorize(functions, IRegistryService.registerComponent.selector, "registerComponent");
|
84
|
+
|
85
|
+
functions = _authorizeForService(REGISTRY(), INSTANCE());
|
86
|
+
_authorize(functions, IRegistryService.registerInstance.selector, "registerInstance");
|
87
|
+
|
88
|
+
functions = _authorizeForService(REGISTRY(), STAKING());
|
89
|
+
_authorize(functions, IRegistryService.registerStake.selector, "registerStake");
|
90
|
+
|
91
|
+
functions = _authorizeForService(REGISTRY(), PRODUCT());
|
92
|
+
_authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
|
93
|
+
}
|
94
|
+
|
95
|
+
|
96
|
+
/// @dev staking service authorization.
|
97
|
+
/// authorized functions MUST be implemented with a restricted modifier
|
98
|
+
function _setupStakingServiceAuthorization()
|
99
|
+
internal
|
100
|
+
{
|
101
|
+
IAccess.FunctionInfo[] storage functions;
|
102
|
+
|
103
|
+
functions = _authorizeForService(STAKING(), INSTANCE());
|
104
|
+
_authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
|
105
|
+
_authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
|
106
|
+
_authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
|
107
|
+
_authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
|
108
|
+
_authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
|
109
|
+
|
110
|
+
functions = _authorizeForService(STAKING(), ALL());
|
111
|
+
_authorize(functions, IStakingService.create.selector, "create");
|
112
|
+
_authorize(functions, IStakingService.stake.selector, "stake");
|
113
|
+
_authorize(functions, IStakingService.restakeToNewTarget.selector, "restakeToNewTarget");
|
114
|
+
_authorize(functions, IStakingService.updateRewards.selector, "updateRewards");
|
115
|
+
_authorize(functions, IStakingService.claimRewards.selector, "claimRewards");
|
116
|
+
_authorize(functions, IStakingService.unstake.selector, "unstake");
|
117
|
+
}
|
118
|
+
|
119
|
+
|
120
|
+
/// @dev Instance service function authorization.
|
121
|
+
function _setupInstanceServiceAuthorization()
|
122
|
+
internal
|
123
|
+
{
|
124
|
+
IAccess.FunctionInfo[] storage functions;
|
125
|
+
|
126
|
+
functions = _authorizeForService(INSTANCE(), COMPONENT());
|
127
|
+
_authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
|
128
|
+
}
|
129
|
+
|
130
|
+
|
131
|
+
/// @dev Component service function authorization.
|
132
|
+
function _setupComponentServiceAuthorization()
|
133
|
+
internal
|
134
|
+
{
|
135
|
+
// authz.authorizations = new DomainAuthorization[](4);
|
136
|
+
|
137
|
+
// authz.authorizations[0].domain = POLICY();
|
138
|
+
// _functions = new IAccessAdmin.Function[](1);
|
139
|
+
// __authorize(ComponentService.increaseProductFees.selector, "increaseProductFees"));
|
140
|
+
// authz.authorizations[0].functions = _functions;
|
141
|
+
|
142
|
+
// authz.authorizations[1].domain = DISTRIBUTION();
|
143
|
+
// _functions = new IAccessAdmin.Function[](1);
|
144
|
+
// __authorize(ComponentService.increaseDistributionBalance.selector, "increaseDistributionBalance"));
|
145
|
+
// authz.authorizations[1].functions = _functions;
|
146
|
+
|
147
|
+
// authz.authorizations[2].domain = POOL();
|
148
|
+
// _functions = new IAccessAdmin.Function[](1);
|
149
|
+
// __authorize(ComponentService.increasePoolBalance.selector, "increasePoolBalance"));
|
150
|
+
// authz.authorizations[2].functions = _functions;
|
151
|
+
|
152
|
+
// authz.authorizations[3].domain = BUNDLE();
|
153
|
+
// _functions = new IAccessAdmin.Function[](1);
|
154
|
+
// __authorize(ComponentService.increaseBundleBalance.selector, "increaseBundleBalance"));
|
155
|
+
// authz.authorizations[3].functions = _functions;
|
156
|
+
}
|
157
|
+
|
158
|
+
/// @dev Distribution service function authorization.
|
159
|
+
function _setupDistributionServiceAuthorization()
|
160
|
+
internal
|
161
|
+
{
|
162
|
+
IAccess.FunctionInfo[] storage functions;
|
163
|
+
|
164
|
+
functions = _authorizeForService(DISTRIBUTION(), POLICY());
|
165
|
+
_authorize(functions, IDistributionService.processSale.selector, "processSale");
|
166
|
+
}
|
167
|
+
|
168
|
+
|
169
|
+
/// @dev Pool service function authorization.
|
170
|
+
function _setupPoolServiceAuthorization()
|
171
|
+
internal
|
172
|
+
{
|
173
|
+
IAccess.FunctionInfo[] storage functions;
|
174
|
+
|
175
|
+
functions = _authorizeForService(POOL(), POLICY());
|
176
|
+
_authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
|
177
|
+
_authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
|
178
|
+
_authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
|
179
|
+
_authorize(functions, IPoolService.processSale.selector, "processSale");
|
180
|
+
|
181
|
+
functions = _authorizeForService(POOL(), CLAIM());
|
182
|
+
_authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
|
183
|
+
}
|
184
|
+
|
185
|
+
|
186
|
+
/// @dev Instance service function authorization.
|
187
|
+
function _setupBundleServiceAuthorization()
|
188
|
+
internal
|
189
|
+
{
|
190
|
+
IAccess.FunctionInfo[] storage functions;
|
191
|
+
|
192
|
+
functions = _authorizeForService(BUNDLE(), POOL());
|
193
|
+
_authorize(functions, IBundleService.create.selector, "create");
|
194
|
+
_authorize(functions, IBundleService.close.selector, "close");
|
195
|
+
_authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
|
196
|
+
_authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
|
197
|
+
_authorize(functions, IBundleService.unlinkPolicy.selector, "unlinkPolicy");
|
198
|
+
}
|
199
|
+
}
|
200
|
+
|