@etherisc/gif-next 0.0.2-8bdd2eb-413 → 0.0.2-8d9d4d6-542
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/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1502 -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 +1168 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +110 -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 +1639 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +134 -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/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +108 -79
- 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/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +13 -0
- 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 +58 -65
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +120 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -79
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +22 -22
- package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.json +1676 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +289 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +70 -46
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +192 -56
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +201 -34
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +41 -17
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +248 -108
- 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/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/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 +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/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/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/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/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/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/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 +19 -19
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1678 -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 +99 -154
- 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/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +42 -10
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +42 -10
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +52 -20
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +52 -20
- 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 +107 -71
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +44 -36
- 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/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +1 -1
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.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 +20 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- 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/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +8 -8
- 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 +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/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/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/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 +125 -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 +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 +2 -2
- 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/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/UFixedLib.dbg.json +1 -1
- 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 +749 -0
- package/contracts/authorization/IAccess.sol +43 -0
- package/contracts/authorization/IAccessAdmin.sol +130 -0
- package/contracts/authorization/IModuleAuthorization.sol +27 -0
- package/contracts/authorization/IServiceAuthorization.sol +35 -0
- package/contracts/authorization/InstanceAdmin.sol +108 -0
- package/contracts/authorization/ModuleAuthorization.sol +116 -0
- package/contracts/authorization/ServiceAuthorization.sol +86 -0
- package/contracts/distribution/DistributionService.sol +3 -4
- package/contracts/instance/IInstance.sol +14 -6
- package/contracts/instance/IInstanceService.sol +24 -8
- package/contracts/instance/Instance.sol +63 -39
- package/contracts/instance/InstanceAdminNew.sol +74 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +176 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +31 -3
- package/contracts/instance/InstanceReader.sol +29 -2
- package/contracts/instance/InstanceService.sol +85 -8
- package/contracts/instance/InstanceStore.sol +29 -20
- package/contracts/instance/base/BalanceStore.sol +11 -6
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectManager.sol +1 -3
- 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 +19 -19
- package/contracts/pool/PoolService.sol +6 -7
- package/contracts/product/ApplicationService.sol +5 -5
- package/contracts/product/ClaimService.sol +5 -5
- package/contracts/product/IClaimService.sol +6 -0
- package/contracts/product/PolicyService.sol +5 -5
- package/contracts/product/PricingService.sol +5 -6
- package/contracts/product/ProductService.sol +5 -5
- package/contracts/registry/IRegistry.sol +1 -1
- package/contracts/registry/Registry.sol +7 -1
- package/contracts/registry/RegistryAdmin.sol +236 -148
- package/contracts/registry/RegistryService.sol +5 -5
- package/contracts/registry/RegistryServiceManager.sol +0 -5
- package/contracts/registry/ReleaseManager.sol +102 -172
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/shared/AccessManagerCustom.sol +6 -1
- package/contracts/shared/AccessManagerExtended.sol +12 -1
- package/contracts/shared/Component.sol +3 -0
- package/contracts/shared/ComponentService.sol +30 -9
- package/contracts/shared/ComponentVerifyingService.sol +13 -7
- package/contracts/shared/IComponentService.sol +11 -0
- package/contracts/shared/IService.sol +7 -0
- package/contracts/shared/Lifecycle.sol +11 -2
- 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 +162 -67
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RoleId.sol +77 -19
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +12 -0
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +6 -2
- package/package.json +3 -3
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
@@ -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,
|
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";
|
@@ -26,10 +26,11 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
|
|
26
26
|
import {IRegistry} from "./IRegistry.sol";
|
27
27
|
import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
|
28
28
|
import {IRegistryService} from "./IRegistryService.sol";
|
29
|
+
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
30
|
+
import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
|
29
31
|
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
30
32
|
import {Registry} from "./Registry.sol";
|
31
33
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
32
|
-
import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
|
33
34
|
|
34
35
|
|
35
36
|
contract ReleaseManager is
|
@@ -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,10 +89,6 @@ 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;
|
@@ -97,16 +97,20 @@ contract ReleaseManager is
|
|
97
97
|
IRegisterable private _staking;
|
98
98
|
address private _stakingOwner;
|
99
99
|
|
100
|
-
|
100
|
+
// TODO remove once it's clear that release authority will always be registry authority
|
101
|
+
mapping(VersionPart version => address authority) internal _releaseAccessManager;
|
101
102
|
mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
|
102
103
|
mapping(address registryService => VersionPart version) _releaseVersionByAddress;
|
103
104
|
|
105
|
+
mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
|
106
|
+
|
104
107
|
VersionPart immutable internal _initial;// first active version
|
105
108
|
VersionPart internal _latest; // latest active version
|
106
109
|
VersionPart internal _next; // version to create and activate
|
107
110
|
StateId internal _state; // current state of release manager
|
108
111
|
|
109
|
-
uint256 internal
|
112
|
+
uint256 internal _registeredServices;
|
113
|
+
uint256 internal _servicesToRegister;
|
110
114
|
|
111
115
|
// deployer of this contract must be gif admin
|
112
116
|
constructor(Registry registry)
|
@@ -143,32 +147,55 @@ contract ReleaseManager is
|
|
143
147
|
}
|
144
148
|
|
145
149
|
_next = VersionPartLib.toVersionPart(_next.toInt() + 1);
|
146
|
-
|
150
|
+
_servicesToRegister = 0;
|
151
|
+
_registeredServices = 0;
|
147
152
|
_state = SCHEDULED();
|
148
153
|
|
149
154
|
return _next;
|
150
155
|
}
|
151
156
|
|
152
|
-
// TODO order of events
|
153
157
|
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,
|
158
|
+
IServiceAuthorization serviceAuthorization,
|
161
159
|
bytes32 salt
|
162
160
|
)
|
163
161
|
external
|
164
162
|
restricted() // GIF_MANAGER_ROLE
|
165
163
|
returns(
|
166
|
-
address
|
164
|
+
address authority,
|
167
165
|
VersionPart version,
|
168
166
|
bytes32 releaseSalt
|
169
167
|
)
|
170
168
|
{
|
171
|
-
|
169
|
+
// verify release manager is in proper state to start deploying a next release
|
170
|
+
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
171
|
+
revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
|
172
|
+
}
|
173
|
+
|
174
|
+
// verify prepareNextRelease is only called once per release
|
175
|
+
if(_servicesToRegister > 0) {
|
176
|
+
revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
|
177
|
+
}
|
178
|
+
|
179
|
+
// verify authorizaion contract release matches with expected version
|
180
|
+
VersionPart releaseVersion = serviceAuthorization.getRelease();
|
181
|
+
if (releaseVersion != _next) {
|
182
|
+
revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
|
183
|
+
}
|
184
|
+
|
185
|
+
// sanity check to ensure service domain list is not empty
|
186
|
+
uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
|
187
|
+
if (serviceDomainsCount == 0) {
|
188
|
+
revert ErrorReleaseManagerNoDomains(_next);
|
189
|
+
}
|
190
|
+
|
191
|
+
_state = DEPLOYING();
|
192
|
+
_servicesToRegister = serviceDomainsCount;
|
193
|
+
|
194
|
+
// store release specific service authorization
|
195
|
+
authority = _admin.authority();
|
196
|
+
_serviceAuthorization[_next] = serviceAuthorization;
|
197
|
+
// TODO refactor: authority no longer release specific
|
198
|
+
_releaseAccessManager[_next] = authority;
|
172
199
|
|
173
200
|
// ensures unique salt
|
174
201
|
releaseSalt = keccak256(
|
@@ -176,34 +203,7 @@ contract ReleaseManager is
|
|
176
203
|
bytes32(version.toInt()),
|
177
204
|
salt));
|
178
205
|
|
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);
|
206
|
+
emit LogReleaseCreation(version, releaseSalt, authority);
|
207
207
|
}
|
208
208
|
|
209
209
|
|
@@ -212,59 +212,52 @@ contract ReleaseManager is
|
|
212
212
|
restricted // GIF_MANAGER_ROLE
|
213
213
|
returns(NftId nftId)
|
214
214
|
{
|
215
|
+
// TODO is it usefull to check transition from A to A?
|
215
216
|
if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
|
216
217
|
revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
|
217
218
|
}
|
218
219
|
|
220
|
+
if (_servicesToRegister == _registeredServices) {
|
221
|
+
revert ErrorReleaseManagerNoServiceRegistrationExpected();
|
222
|
+
}
|
223
|
+
|
219
224
|
(
|
220
225
|
IRegistry.ObjectInfo memory info,
|
221
226
|
ObjectType domain,
|
222
227
|
VersionPart version
|
223
228
|
) = _verifyService(service);
|
224
229
|
|
225
|
-
|
226
|
-
if (
|
227
|
-
revert
|
230
|
+
ObjectType expectedDomain = _serviceAuthorization[version].getServiceDomains()[_registeredServices];
|
231
|
+
if (service.getDomain() != expectedDomain) {
|
232
|
+
revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, service.getDomain());
|
228
233
|
}
|
229
234
|
|
230
|
-
uint serviceIdx = _awaitingRegistration - 1;
|
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
235
|
// checked in registry
|
263
236
|
_releaseInfo[version].domains.push(domain);
|
264
237
|
|
238
|
+
// register service with registry
|
265
239
|
nftId = _registry.registerService(info, version, domain);
|
240
|
+
_registeredServices++;
|
266
241
|
|
267
242
|
service.linkToRegisteredNftId();
|
243
|
+
|
244
|
+
// setup service authorization
|
245
|
+
_admin.authorizeService(
|
246
|
+
_serviceAuthorization[version],
|
247
|
+
service);
|
248
|
+
|
249
|
+
// TODO consider to extend this to REGISTRY
|
250
|
+
// special roles for registry/staking/pool service
|
251
|
+
if (domain == STAKING() || domain == POOL()) {
|
252
|
+
// TODO rename to grantServiceDomainRole()
|
253
|
+
_admin.grantServiceRoleForAllVersions(service, domain);
|
254
|
+
}
|
255
|
+
|
256
|
+
if (_registeredServices < _servicesToRegister) {
|
257
|
+
_state = DEPLOYING();
|
258
|
+
} else {
|
259
|
+
// TODO end state depends on (_awaitingRegistration == 0)
|
260
|
+
}
|
268
261
|
}
|
269
262
|
|
270
263
|
|
@@ -276,20 +269,18 @@ contract ReleaseManager is
|
|
276
269
|
revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
|
277
270
|
}
|
278
271
|
|
272
|
+
// release fully deployed
|
279
273
|
VersionPart version = _next;
|
280
|
-
|
274
|
+
if(_registeredServices < _servicesToRegister) {
|
275
|
+
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
|
276
|
+
}
|
281
277
|
|
282
|
-
// release exists, registry service
|
283
|
-
|
278
|
+
// release exists, registry service MUST exist
|
279
|
+
address service = _registry.getServiceAddress(REGISTRY(), version);
|
284
280
|
if(service == address(0)) {
|
285
281
|
revert ErrorReleaseManagerReleaseNotCreated(version);
|
286
282
|
}
|
287
283
|
|
288
|
-
// release fully deployed
|
289
|
-
if(_awaitingRegistration > 0) {
|
290
|
-
revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
|
291
|
-
}
|
292
|
-
|
293
284
|
// release is not activated
|
294
285
|
if(_releaseInfo[version].activatedAt.gtz()) {
|
295
286
|
revert ErrorReleaseManagerReleaseAlreadyActivated(version);
|
@@ -321,7 +312,8 @@ contract ReleaseManager is
|
|
321
312
|
|
322
313
|
disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
|
323
314
|
|
324
|
-
|
315
|
+
// TODO come up with a substitute
|
316
|
+
// _releaseAccessManager[version].disable(disableDelay);
|
325
317
|
|
326
318
|
_releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
|
327
319
|
}
|
@@ -336,7 +328,8 @@ contract ReleaseManager is
|
|
336
328
|
//}
|
337
329
|
|
338
330
|
// reverts if disable delay expired
|
339
|
-
|
331
|
+
// TODO come up with a substitute
|
332
|
+
// _releaseAccessManager[version].enable();
|
340
333
|
|
341
334
|
_releaseInfo[version].disabledAt = zeroTimestamp();
|
342
335
|
}
|
@@ -381,13 +374,23 @@ contract ReleaseManager is
|
|
381
374
|
}
|
382
375
|
|
383
376
|
function getRemainingServicesToRegister() external view returns (uint256 services) {
|
384
|
-
return
|
377
|
+
return _servicesToRegister - _registeredServices;
|
385
378
|
}
|
386
379
|
|
380
|
+
// TODO cleanup
|
387
381
|
function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
|
388
|
-
return _releaseAccessManager[version];
|
382
|
+
// return _releaseAccessManager[version];
|
383
|
+
}
|
384
|
+
|
385
|
+
function getServiceAuthorization(VersionPart version)
|
386
|
+
external
|
387
|
+
view
|
388
|
+
returns (IServiceAuthorization serviceAuthorization)
|
389
|
+
{
|
390
|
+
return _serviceAuthorization[version];
|
389
391
|
}
|
390
|
-
|
392
|
+
|
393
|
+
// TODO token registry knows nothing about adfmin, only registry
|
391
394
|
function getRegistryAdmin() external view returns (address) {
|
392
395
|
return address(_admin);
|
393
396
|
}
|
@@ -424,6 +427,7 @@ contract ReleaseManager is
|
|
424
427
|
if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
|
425
428
|
if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
|
426
429
|
if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
|
430
|
+
// TODO active -> scheduled missing, add tests to cover this and more scenarios (#358)
|
427
431
|
|
428
432
|
return false;
|
429
433
|
}
|
@@ -506,81 +510,7 @@ contract ReleaseManager is
|
|
506
510
|
}
|
507
511
|
}
|
508
512
|
|
509
|
-
|
510
|
-
function _verifyReleaseAuthorizations(
|
511
|
-
address[] memory serviceAddress,
|
512
|
-
RoleId[][] memory serviceRoles,
|
513
|
-
RoleId[][] memory functionRoles,
|
514
|
-
bytes4[][][] memory selectors
|
515
|
-
)
|
516
|
-
internal
|
517
|
-
pure
|
518
|
-
{
|
519
|
-
if(serviceAddress.length == 0) {
|
520
|
-
revert ErrorReleaseManagerReleaseEmpty();
|
521
|
-
}
|
522
|
-
|
523
|
-
for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
|
524
|
-
{
|
525
|
-
for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
|
526
|
-
{
|
527
|
-
RoleId role = serviceRoles[serviceIdx][roleIdx];
|
528
|
-
if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
|
529
|
-
revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
|
530
|
-
}
|
531
|
-
}
|
532
|
-
}
|
533
|
-
|
534
|
-
// TODO no duplicate service "domain" role per release
|
535
|
-
// TODO no duplicate service roles per service
|
536
|
-
// TODO no duplicate service function roles per service
|
537
|
-
// TODO no duplicate service function selectors per service
|
538
|
-
}
|
539
|
-
|
540
|
-
function _setServiceAuthorizations(
|
541
|
-
AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
|
542
|
-
address serviceAddress,
|
543
|
-
string memory serviceName,
|
544
|
-
RoleId[] memory serviceRoles,
|
545
|
-
string[] memory serviceRoleNames,
|
546
|
-
RoleId[] memory functionRoles,
|
547
|
-
string[] memory functionRoleNames,
|
548
|
-
bytes4[][] memory selectors
|
549
|
-
)
|
550
|
-
internal
|
551
|
-
{
|
552
|
-
accessManager.createTarget(serviceAddress, serviceName);
|
553
|
-
|
554
|
-
for(uint idx = 0; idx < functionRoles.length; idx++)
|
555
|
-
{
|
556
|
-
uint64 roleInt = functionRoles[idx].toInt();
|
557
|
-
|
558
|
-
if(!accessManager.isRoleExists(roleInt)) {
|
559
|
-
accessManager.createRole(roleInt, functionRoleNames[idx]);
|
560
|
-
}
|
561
|
-
|
562
|
-
accessManager.setTargetFunctionRole(
|
563
|
-
serviceAddress,
|
564
|
-
selectors[idx],
|
565
|
-
functionRoles[idx].toInt());
|
566
|
-
}
|
567
|
-
|
568
|
-
for(uint idx = 0; idx < serviceRoles.length; idx++)
|
569
|
-
{
|
570
|
-
uint64 roleInt = serviceRoles[idx].toInt();
|
571
|
-
|
572
|
-
if(!accessManager.isRoleExists(roleInt)) {
|
573
|
-
accessManager.createRole(roleInt, serviceRoleNames[idx]);
|
574
|
-
}
|
575
|
-
|
576
|
-
accessManager.grantRole(
|
577
|
-
serviceRoles[idx].toInt(),
|
578
|
-
serviceAddress,
|
579
|
-
0);
|
580
|
-
}
|
581
|
-
}
|
582
|
-
|
583
|
-
// returns true iff a the address passes some simple proxy tests.
|
513
|
+
/// @dev returns true iff a the address passes some simple proxy tests.
|
584
514
|
function _isRegistry(address registryAddress) internal view returns (bool) {
|
585
515
|
|
586
516
|
// 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.createComponentTarget.selector, "createComponentTarget");
|
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
|
+
|
@@ -17,7 +17,12 @@ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Ini
|
|
17
17
|
2. _getAdminRestrictions() private view -> internal virtual view
|
18
18
|
3. _checkSelector() private pure -> internal pure
|
19
19
|
*/
|
20
|
-
abstract contract AccessManagerCustom is
|
20
|
+
abstract contract AccessManagerCustom is
|
21
|
+
Initializable,
|
22
|
+
ContextUpgradeable,
|
23
|
+
MulticallUpgradeable,
|
24
|
+
IAccessManager
|
25
|
+
{
|
21
26
|
using Time for *;
|
22
27
|
|
23
28
|
// Structure that stores the details for a target contract.
|
@@ -13,7 +13,10 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
|
13
13
|
|
14
14
|
|
15
15
|
// IMPORTANT: check role/target for existance before using return value of getter
|
16
|
-
contract AccessManagerExtended is
|
16
|
+
contract AccessManagerExtended is
|
17
|
+
AccessManagerCustom,
|
18
|
+
IAccessManagerExtended
|
19
|
+
{
|
17
20
|
using EnumerableSet for EnumerableSet.AddressSet;
|
18
21
|
|
19
22
|
string constant private ADMIN_ROLE_NAME = "Admin";
|
@@ -76,6 +79,14 @@ contract AccessManagerExtended is AccessManagerCustom, IAccessManagerExtended {
|
|
76
79
|
return $._targetAddressForName[name] != address(0);
|
77
80
|
}
|
78
81
|
|
82
|
+
function getTargets() public view returns (uint256 numberOfTargets) {
|
83
|
+
return _getAccessManagerExtendedStorage()._targetAddresses.length;
|
84
|
+
}
|
85
|
+
|
86
|
+
function getTarget(uint256 idx) public view returns (address target) {
|
87
|
+
return _getAccessManagerExtendedStorage()._targetAddresses[idx];
|
88
|
+
}
|
89
|
+
|
79
90
|
function getTargetAddress(string memory name) public view returns(address targetAddress) {
|
80
91
|
AccessManagerExtendedStorage storage $ = _getAccessManagerExtendedStorage();
|
81
92
|
return $._targetAddressForName[name];
|