@etherisc/gif-next 0.0.2-e200f36-952 → 0.0.2-e25d641-064
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 +85 -8
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → accounting/IAccountingService.sol/IAccountingService.json} +408 -104
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +549 -209
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +196 -441
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +115 -325
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +615 -318
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +218 -126
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +102 -160
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +429 -77
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1472 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2045 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1423 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1639 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2551 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +560 -66
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +377 -58
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +568 -166
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1652 -837
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +390 -228
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +142 -104
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +878 -806
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- 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 +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +148 -317
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +116 -109
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +124 -269
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +176 -96
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +171 -324
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +352 -388
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +171 -127
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +247 -121
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +152 -156
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +474 -233
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +150 -306
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +726 -484
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +226 -106
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +357 -173
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +164 -96
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +283 -367
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +464 -243
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +194 -122
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +296 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +333 -17
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +300 -59
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +140 -37
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +270 -202
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +286 -21
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +443 -265
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +199 -111
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +198 -238
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +156 -108
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +275 -359
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +364 -186
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +165 -93
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +355 -44
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +561 -105
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +795 -394
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +140 -88
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +100 -227
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +474 -619
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +179 -129
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +93 -68
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +116 -109
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
- 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 +84 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +123 -268
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +331 -107
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +184 -23
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +433 -330
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +179 -98
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +91 -67
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +253 -171
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +157 -93
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +205 -150
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +61 -51
- 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 +35 -11
- 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 +28 -4
- 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 +94 -38
- 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/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- 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 +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +117 -78
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +456 -267
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +159 -207
- package/contracts/authorization/IAccess.sol +25 -6
- package/contracts/authorization/IAccessAdmin.sol +87 -79
- package/contracts/authorization/IAuthorization.sol +9 -36
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +254 -24
- package/contracts/distribution/BasicDistribution.sol +20 -17
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +42 -90
- package/contracts/distribution/DistributionService.sol +225 -113
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +4 -11
- package/contracts/distribution/IDistributionService.sol +38 -24
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +422 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +99 -17
- package/contracts/instance/IInstanceService.sol +56 -32
- package/contracts/instance/Instance.sol +185 -68
- package/contracts/instance/InstanceAdmin.sol +276 -178
- package/contracts/instance/InstanceAuthorizationV3.sol +119 -56
- package/contracts/instance/InstanceReader.sol +474 -264
- package/contracts/instance/InstanceService.sol +271 -239
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +13 -6
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/base/BalanceStore.sol +3 -5
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +7 -9
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +29 -13
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +33 -12
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/oracle/BasicOracle.sol +1 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +6 -19
- package/contracts/oracle/OracleService.sol +117 -86
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +33 -37
- package/contracts/pool/BasicPoolAuthorization.sol +34 -11
- package/contracts/pool/BundleService.sol +113 -165
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +28 -46
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +77 -67
- package/contracts/pool/Pool.sol +139 -132
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +357 -252
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +109 -31
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +9 -13
- package/contracts/product/BasicProductAuthorization.sol +32 -12
- package/contracts/product/ClaimService.sol +382 -157
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +28 -3
- package/contracts/product/IClaimService.sol +43 -8
- package/contracts/product/IPolicyService.sol +43 -14
- package/contracts/product/IPricingService.sol +10 -9
- package/contracts/product/IProductComponent.sol +27 -4
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +354 -283
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +59 -54
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +168 -82
- package/contracts/product/RiskService.sol +130 -37
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +69 -28
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +363 -203
- package/contracts/registry/RegistryAdmin.sol +110 -296
- package/contracts/registry/RegistryAuthorization.sol +284 -0
- package/contracts/registry/RegistryService.sol +38 -49
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +275 -240
- package/contracts/registry/ServiceAuthorizationV3.sol +201 -55
- package/contracts/registry/TokenRegistry.sol +12 -13
- package/contracts/shared/Component.sol +65 -123
- package/contracts/shared/ComponentService.sol +412 -374
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ContractLib.sol +311 -0
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +43 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +4 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +10 -2
- package/contracts/shared/InstanceLinkedComponent.sol +71 -49
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +30 -8
- package/contracts/shared/PolicyHolder.sol +18 -54
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -35
- package/contracts/shared/TokenHandler.sol +275 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +47 -19
- package/contracts/staking/IStakingService.sol +21 -11
- package/contracts/staking/Staking.sol +196 -88
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +96 -21
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +40 -24
- package/contracts/staking/StakingService.sol +88 -27
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/StakingStore.sol +3 -2
- package/contracts/staking/TargetManagerLib.sol +1 -1
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +70 -38
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +4 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +37 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +93 -45
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
- package/contracts/upgradeability/Versionable.sol +8 -5
- package/package.json +5 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -387
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -0,0 +1,284 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IAccess} from "../authorization/IAccess.sol";
|
5
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
+
import {IStaking} from "../staking/IStaking.sol";
|
7
|
+
|
8
|
+
import {Authorization} from "../authorization/Authorization.sol";
|
9
|
+
import {POOL, REGISTRY, STAKING} from "../../contracts/type/ObjectType.sol";
|
10
|
+
import {PUBLIC_ROLE} from "../type/RoleId.sol";
|
11
|
+
import {ReleaseRegistry} from "./ReleaseRegistry.sol";
|
12
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
13
|
+
import {RoleIdLib, ADMIN_ROLE, GIF_ADMIN_ROLE, GIF_MANAGER_ROLE} from "../type/RoleId.sol";
|
14
|
+
import {Staking} from "../staking/Staking.sol";
|
15
|
+
import {StakingStore} from "../staking/StakingStore.sol";
|
16
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
17
|
+
import {TokenRegistry} from "../registry/TokenRegistry.sol";
|
18
|
+
import {VersionPartLib} from "../type/Version.sol";
|
19
|
+
|
20
|
+
|
21
|
+
contract RegistryAuthorization
|
22
|
+
is Authorization
|
23
|
+
{
|
24
|
+
|
25
|
+
/// @dev gif core roles
|
26
|
+
string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
|
27
|
+
string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
|
28
|
+
string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
|
29
|
+
string public constant STAKING_ROLE_NAME = "StakingRole";
|
30
|
+
|
31
|
+
/// @dev gif roles for external contracts
|
32
|
+
string public constant REGISTRY_SERVICE_ROLE_NAME = "RegistryServiceRole";
|
33
|
+
string public constant COMPONENT_SERVICE_ROLE_NAME = "ComponentServiceRole";
|
34
|
+
string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
|
35
|
+
string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
|
36
|
+
|
37
|
+
/// @dev gif core targets
|
38
|
+
string public constant REGISTRY_ADMIN_TARGET_NAME = "RegistryAdmin";
|
39
|
+
string public constant REGISTRY_TARGET_NAME = "Registry";
|
40
|
+
string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
|
41
|
+
string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
|
42
|
+
|
43
|
+
string public constant STAKING_TARGET_NAME = "Staking";
|
44
|
+
string public constant STAKING_TH_TARGET_NAME = "StakingTh";
|
45
|
+
string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
|
46
|
+
|
47
|
+
constructor(string memory commitHash)
|
48
|
+
Authorization(
|
49
|
+
REGISTRY_TARGET_NAME,
|
50
|
+
REGISTRY(),
|
51
|
+
3,
|
52
|
+
commitHash,
|
53
|
+
false, // isComponent
|
54
|
+
false) // includeTokenHandler
|
55
|
+
{ }
|
56
|
+
|
57
|
+
/// @dev Sets up the GIF admin and manager roles.
|
58
|
+
function _setupRoles() internal override {
|
59
|
+
|
60
|
+
// max number of versioned contracts per generic service
|
61
|
+
uint32 maxReleases = uint32(VersionPartLib.releaseMax().toInt());
|
62
|
+
|
63
|
+
// service roles (for all releases)
|
64
|
+
_addRole(
|
65
|
+
RoleIdLib.toGenericServiceRoleId(REGISTRY()),
|
66
|
+
_toRoleInfo({
|
67
|
+
adminRoleId: ADMIN_ROLE(),
|
68
|
+
roleType: RoleType.Core,
|
69
|
+
maxMemberCount: maxReleases,
|
70
|
+
name: REGISTRY_SERVICE_ROLE_NAME}));
|
71
|
+
|
72
|
+
_addRole(
|
73
|
+
RoleIdLib.toGenericServiceRoleId(STAKING()),
|
74
|
+
_toRoleInfo({
|
75
|
+
adminRoleId: ADMIN_ROLE(),
|
76
|
+
roleType: RoleType.Core,
|
77
|
+
maxMemberCount: maxReleases,
|
78
|
+
name: STAKING_SERVICE_ROLE_NAME}));
|
79
|
+
|
80
|
+
_addRole(
|
81
|
+
RoleIdLib.toGenericServiceRoleId(POOL()),
|
82
|
+
_toRoleInfo({
|
83
|
+
adminRoleId: ADMIN_ROLE(),
|
84
|
+
roleType: RoleType.Core,
|
85
|
+
maxMemberCount: maxReleases,
|
86
|
+
name: POOL_SERVICE_ROLE_NAME}));
|
87
|
+
|
88
|
+
// gif admin role
|
89
|
+
_addRole(
|
90
|
+
GIF_ADMIN_ROLE(),
|
91
|
+
_toRoleInfo({
|
92
|
+
adminRoleId: ADMIN_ROLE(),
|
93
|
+
roleType: RoleType.Core,
|
94
|
+
maxMemberCount: 2, // TODO decide on max member count
|
95
|
+
name: GIF_ADMIN_ROLE_NAME}));
|
96
|
+
|
97
|
+
// gif manager role
|
98
|
+
_addRole(
|
99
|
+
GIF_MANAGER_ROLE(),
|
100
|
+
_toRoleInfo({
|
101
|
+
adminRoleId: ADMIN_ROLE(),
|
102
|
+
roleType: RoleType.Core,
|
103
|
+
maxMemberCount: 1, // TODO decide on max member count
|
104
|
+
name: GIF_MANAGER_ROLE_NAME}));
|
105
|
+
|
106
|
+
}
|
107
|
+
|
108
|
+
/// @dev Sets up the relevant (non-service) targets for the registry.
|
109
|
+
function _setupTargets() internal override {
|
110
|
+
_addGifTarget(REGISTRY_ADMIN_TARGET_NAME);
|
111
|
+
_addGifTarget(RELEASE_REGISTRY_TARGET_NAME);
|
112
|
+
_addGifTarget(TOKEN_REGISTRY_TARGET_NAME);
|
113
|
+
|
114
|
+
_addGifTarget(STAKING_TARGET_NAME);
|
115
|
+
_addGifTarget(STAKING_TH_TARGET_NAME);
|
116
|
+
_addGifTarget(STAKING_STORE_TARGET_NAME);
|
117
|
+
}
|
118
|
+
|
119
|
+
|
120
|
+
function _setupTargetAuthorizations()
|
121
|
+
internal
|
122
|
+
override
|
123
|
+
{
|
124
|
+
// registry
|
125
|
+
_setupRegistryAuthorization();
|
126
|
+
_setupRegistryAdminAuthorization();
|
127
|
+
_setupReleaseRegistryAuthorization();
|
128
|
+
_setupTokenRegistryAuthorization();
|
129
|
+
|
130
|
+
// staking
|
131
|
+
_setupStakingAuthorization();
|
132
|
+
_setupStakingThAuthorization();
|
133
|
+
_setupStakingStoreAuthorization();
|
134
|
+
}
|
135
|
+
|
136
|
+
event LogAccessAdminDebug(string message, string custom, uint256 value);
|
137
|
+
|
138
|
+
function _setupRegistryAuthorization() internal {
|
139
|
+
IAccess.FunctionInfo[] storage functions;
|
140
|
+
|
141
|
+
// gif admin role
|
142
|
+
functions = _authorizeForTarget(REGISTRY_TARGET_NAME, GIF_ADMIN_ROLE());
|
143
|
+
_authorize(functions, IRegistry.registerRegistry.selector, "registerRegistry");
|
144
|
+
|
145
|
+
// registry service role
|
146
|
+
functions = _authorizeForTarget(
|
147
|
+
REGISTRY_TARGET_NAME,
|
148
|
+
RoleIdLib.toGenericServiceRoleId(REGISTRY()));
|
149
|
+
|
150
|
+
_authorize(functions, IRegistry.register.selector, "register");
|
151
|
+
_authorize(functions, IRegistry.registerWithCustomType.selector, "registerWithCustomType");
|
152
|
+
|
153
|
+
// release registry role
|
154
|
+
functions = _authorizeForTarget(
|
155
|
+
REGISTRY_TARGET_NAME,
|
156
|
+
getTargetRole(getTarget(RELEASE_REGISTRY_TARGET_NAME)));
|
157
|
+
|
158
|
+
_authorize(functions, IRegistry.registerService.selector, "registerService");
|
159
|
+
}
|
160
|
+
|
161
|
+
|
162
|
+
function _setupRegistryAdminAuthorization() internal {
|
163
|
+
IAccess.FunctionInfo[] storage functions;
|
164
|
+
|
165
|
+
// release registry role
|
166
|
+
functions = _authorizeForTarget(
|
167
|
+
REGISTRY_ADMIN_TARGET_NAME,
|
168
|
+
getTargetRole(getTarget(RELEASE_REGISTRY_TARGET_NAME)));
|
169
|
+
|
170
|
+
_authorize(functions, RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
|
171
|
+
}
|
172
|
+
|
173
|
+
|
174
|
+
function _setupReleaseRegistryAuthorization() internal {
|
175
|
+
IAccess.FunctionInfo[] storage functions;
|
176
|
+
|
177
|
+
functions = _authorizeForTarget(RELEASE_REGISTRY_TARGET_NAME, GIF_ADMIN_ROLE());
|
178
|
+
_authorize(functions, ReleaseRegistry.createNextRelease.selector, "createNextRelease");
|
179
|
+
_authorize(functions, ReleaseRegistry.activateNextRelease.selector, "activateNextRelease");
|
180
|
+
_authorize(functions, ReleaseRegistry.setActive.selector, "setActive");
|
181
|
+
|
182
|
+
functions = _authorizeForTarget(RELEASE_REGISTRY_TARGET_NAME, GIF_MANAGER_ROLE());
|
183
|
+
_authorize(functions, ReleaseRegistry.prepareNextRelease.selector, "prepareNextRelease");
|
184
|
+
_authorize(functions, ReleaseRegistry.registerService.selector, "registerService");
|
185
|
+
}
|
186
|
+
|
187
|
+
|
188
|
+
function _setupTokenRegistryAuthorization() internal {
|
189
|
+
IAccess.FunctionInfo[] storage functions;
|
190
|
+
|
191
|
+
// gif manager role
|
192
|
+
functions = _authorizeForTarget(TOKEN_REGISTRY_TARGET_NAME, GIF_MANAGER_ROLE());
|
193
|
+
_authorize(functions, TokenRegistry.registerToken.selector, "registerToken");
|
194
|
+
_authorize(functions, TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
|
195
|
+
_authorize(functions, TokenRegistry.setActive.selector, "setActive");
|
196
|
+
_authorize(functions, TokenRegistry.setActiveForVersion.selector, "setActiveForVersion");
|
197
|
+
// TODO find a better way (only needed for testing)
|
198
|
+
_authorize(functions, TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
|
199
|
+
}
|
200
|
+
|
201
|
+
|
202
|
+
function _setupStakingAuthorization() internal {
|
203
|
+
IAccess.FunctionInfo[] storage functions;
|
204
|
+
|
205
|
+
// staking public role (protected by owner)
|
206
|
+
functions = _authorizeForTarget(
|
207
|
+
STAKING_TARGET_NAME,
|
208
|
+
PUBLIC_ROLE());
|
209
|
+
|
210
|
+
_authorize(functions, IStaking.setProtocolLockingPeriod.selector, "setProtocolLockingPeriod");
|
211
|
+
_authorize(functions, IStaking.setProtocolRewardRate.selector, "setProtocolRewardRate");
|
212
|
+
_authorize(functions, IStaking.setStakingReader.selector, "setStakingReader");
|
213
|
+
_authorize(functions, IStaking.approveTokenHandler.selector, "approveTokenHandler");
|
214
|
+
_authorize(functions, IStaking.approveTokenHandler.selector, "approveTokenHandler");
|
215
|
+
_authorize(functions, Staking.setStakingReader.selector, "setStakingReader");
|
216
|
+
_authorize(functions, Staking.setStakingRate.selector, "setStaking");
|
217
|
+
|
218
|
+
// staking service role
|
219
|
+
functions = _authorizeForTarget(
|
220
|
+
STAKING_TARGET_NAME,
|
221
|
+
RoleIdLib.toGenericServiceRoleId(STAKING()));
|
222
|
+
|
223
|
+
_authorize(functions, IStaking.registerTarget.selector, "registerTarget");
|
224
|
+
_authorize(functions, IStaking.setLockingPeriod.selector, "setLockingPeriod");
|
225
|
+
_authorize(functions, IStaking.setRewardRate.selector, "setRewardRate");
|
226
|
+
_authorize(functions, IStaking.setMaxStakedAmount.selector, "setMaxStakedAmount");
|
227
|
+
_authorize(functions, IStaking.refillRewardReserves.selector, "refillRewardReserves");
|
228
|
+
_authorize(functions, IStaking.withdrawRewardReserves.selector, "withdrawRewardReserves");
|
229
|
+
_authorize(functions, IStaking.createStake.selector, "createStake");
|
230
|
+
_authorize(functions, IStaking.stake.selector, "stake");
|
231
|
+
_authorize(functions, IStaking.unstake.selector, "unstake");
|
232
|
+
_authorize(functions, IStaking.restake.selector, "restake");
|
233
|
+
_authorize(functions, IStaking.updateRewards.selector, "updateRewards");
|
234
|
+
_authorize(functions, IStaking.claimRewards.selector, "claimRewards");
|
235
|
+
|
236
|
+
// pool service role
|
237
|
+
functions = _authorizeForTarget(
|
238
|
+
STAKING_TARGET_NAME,
|
239
|
+
RoleIdLib.toGenericServiceRoleId(POOL()));
|
240
|
+
|
241
|
+
_authorize(functions, IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
|
242
|
+
_authorize(functions, IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
|
243
|
+
}
|
244
|
+
|
245
|
+
|
246
|
+
function _setupStakingThAuthorization() internal {
|
247
|
+
IAccess.FunctionInfo[] storage functions;
|
248
|
+
|
249
|
+
// staking service role
|
250
|
+
functions = _authorizeForTarget(
|
251
|
+
STAKING_TH_TARGET_NAME,
|
252
|
+
RoleIdLib.toGenericServiceRoleId(STAKING()));
|
253
|
+
|
254
|
+
_authorize(functions, TokenHandler.approve.selector, "approve");
|
255
|
+
_authorize(functions, TokenHandler.pullToken.selector, "pullToken");
|
256
|
+
_authorize(functions, TokenHandler.pushToken.selector, "pushToken");
|
257
|
+
}
|
258
|
+
|
259
|
+
|
260
|
+
function _setupStakingStoreAuthorization() internal {
|
261
|
+
IAccess.FunctionInfo[] storage functions;
|
262
|
+
|
263
|
+
// release registry role
|
264
|
+
functions = _authorizeForTarget(
|
265
|
+
STAKING_STORE_TARGET_NAME,
|
266
|
+
getTargetRole(getTarget(STAKING_TARGET_NAME)));
|
267
|
+
|
268
|
+
_authorize(functions, StakingStore.setStakingRate.selector, "setStakingRate");
|
269
|
+
_authorize(functions, StakingStore.createTarget.selector, "createTarget");
|
270
|
+
_authorize(functions, StakingStore.updateTarget.selector, "updateTarget");
|
271
|
+
_authorize(functions, StakingStore.increaseReserves.selector, "increaseReserves");
|
272
|
+
_authorize(functions, StakingStore.decreaseReserves.selector, "decreaseReserves");
|
273
|
+
_authorize(functions, StakingStore.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
|
274
|
+
_authorize(functions, StakingStore.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
|
275
|
+
_authorize(functions, StakingStore.create.selector, "create");
|
276
|
+
_authorize(functions, StakingStore.update.selector, "update");
|
277
|
+
_authorize(functions, StakingStore.increaseStake.selector, "increaseStake");
|
278
|
+
_authorize(functions, StakingStore.restakeRewards.selector, "restakeRewards");
|
279
|
+
_authorize(functions, StakingStore.updateRewards.selector, "updateRewards");
|
280
|
+
_authorize(functions, StakingStore.claimUpTo.selector, "claimUpTo");
|
281
|
+
_authorize(functions, StakingStore.unstakeUpTo.selector, "unstakeUpTo");
|
282
|
+
}
|
283
|
+
}
|
284
|
+
|
@@ -18,8 +18,6 @@ contract RegistryService is
|
|
18
18
|
Service,
|
19
19
|
IRegistryService
|
20
20
|
{
|
21
|
-
using NftIdLib for NftId;
|
22
|
-
|
23
21
|
// TODO update to real hash when registry is stable
|
24
22
|
bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
|
25
23
|
|
@@ -32,15 +30,15 @@ contract RegistryService is
|
|
32
30
|
)
|
33
31
|
internal
|
34
32
|
virtual override
|
35
|
-
|
33
|
+
onlyInitializing
|
36
34
|
{
|
37
35
|
(
|
38
|
-
address
|
39
|
-
address
|
36
|
+
address authority,
|
37
|
+
address registry
|
40
38
|
) = abi.decode(data, (address, address));
|
41
39
|
|
42
|
-
|
43
|
-
|
40
|
+
__Service_init(authority, registry, owner);
|
41
|
+
_registerInterface(type(IRegistryService).interfaceId);
|
44
42
|
}
|
45
43
|
|
46
44
|
|
@@ -60,7 +58,7 @@ contract RegistryService is
|
|
60
58
|
function registerInstance(IRegisterable instance, address owner)
|
61
59
|
external
|
62
60
|
virtual
|
63
|
-
restricted
|
61
|
+
restricted()
|
64
62
|
returns(
|
65
63
|
IRegistry.ObjectInfo memory info
|
66
64
|
)
|
@@ -75,29 +73,33 @@ contract RegistryService is
|
|
75
73
|
instance.linkToRegisteredNftId(); // asume safe
|
76
74
|
}
|
77
75
|
|
78
|
-
function registerProduct(
|
76
|
+
function registerProduct(
|
77
|
+
IComponent product,
|
78
|
+
address initialOwner
|
79
|
+
)
|
79
80
|
external
|
80
|
-
|
81
|
+
virtual
|
82
|
+
restricted()
|
81
83
|
returns(
|
82
84
|
IRegistry.ObjectInfo memory info
|
83
85
|
)
|
84
86
|
{
|
85
|
-
// CAN revert if no ERC165 support -> will revert with empty message
|
86
87
|
if(!product.supportsInterface(type(IProductComponent).interfaceId)) {
|
87
88
|
revert ErrorRegistryServiceNotProduct(address(product));
|
88
89
|
}
|
89
90
|
|
90
|
-
info = _getAndVerifyContractInfo(product, PRODUCT(),
|
91
|
+
info = _getAndVerifyContractInfo(product, PRODUCT(), initialOwner);
|
91
92
|
info.nftId = getRegistry().register(info);
|
92
93
|
}
|
93
94
|
|
94
|
-
function
|
95
|
+
function registerProductLinkedComponent(
|
95
96
|
IComponent component,
|
96
97
|
ObjectType objectType,
|
97
98
|
address initialOwner
|
98
99
|
)
|
99
100
|
external
|
100
|
-
|
101
|
+
virtual
|
102
|
+
restricted()
|
101
103
|
returns(
|
102
104
|
IRegistry.ObjectInfo memory info
|
103
105
|
)
|
@@ -107,43 +109,18 @@ contract RegistryService is
|
|
107
109
|
revert ErrorRegistryServiceNotComponent(address(component));
|
108
110
|
}
|
109
111
|
|
110
|
-
|
111
|
-
|
112
|
-
}
|
113
|
-
|
114
|
-
function registerPool(IComponent pool, address owner)
|
115
|
-
external
|
116
|
-
restricted
|
117
|
-
returns(
|
118
|
-
IRegistry.ObjectInfo memory info
|
119
|
-
)
|
120
|
-
{
|
121
|
-
if(!pool.supportsInterface(type(IPoolComponent).interfaceId)) {
|
122
|
-
revert ErrorRegistryServiceNotPool(address(pool));
|
123
|
-
}
|
124
|
-
|
125
|
-
info = _getAndVerifyContractInfo(pool, POOL(), owner);
|
126
|
-
info.nftId = getRegistry().register(info);
|
127
|
-
}
|
128
|
-
|
129
|
-
function registerDistribution(IComponent distribution, address owner)
|
130
|
-
external
|
131
|
-
restricted
|
132
|
-
returns(
|
133
|
-
IRegistry.ObjectInfo memory info
|
134
|
-
)
|
135
|
-
{
|
136
|
-
if(!distribution.supportsInterface(type(IDistributionComponent).interfaceId)) {
|
137
|
-
revert ErrorRegistryServiceNotDistribution(address(distribution));
|
112
|
+
if (!(objectType == DISTRIBUTION() || objectType == ORACLE() || objectType == POOL())) {
|
113
|
+
revert ErrorRegistryServiceNotProductLinkedComponent(address(component));
|
138
114
|
}
|
139
115
|
|
140
|
-
info = _getAndVerifyContractInfo(
|
116
|
+
info = _getAndVerifyContractInfo(component, objectType, initialOwner);
|
141
117
|
info.nftId = getRegistry().register(info);
|
142
118
|
}
|
143
119
|
|
144
120
|
function registerDistributor(IRegistry.ObjectInfo memory info)
|
145
121
|
external
|
146
|
-
|
122
|
+
virtual
|
123
|
+
restricted()
|
147
124
|
returns(NftId nftId)
|
148
125
|
{
|
149
126
|
_verifyObjectInfo(info, DISTRIBUTOR());
|
@@ -152,7 +129,8 @@ contract RegistryService is
|
|
152
129
|
|
153
130
|
function registerPolicy(IRegistry.ObjectInfo memory info)
|
154
131
|
external
|
155
|
-
|
132
|
+
virtual
|
133
|
+
restricted()
|
156
134
|
returns(NftId nftId)
|
157
135
|
{
|
158
136
|
_verifyObjectInfo(info, POLICY());
|
@@ -161,7 +139,8 @@ contract RegistryService is
|
|
161
139
|
|
162
140
|
function registerBundle(IRegistry.ObjectInfo memory info)
|
163
141
|
external
|
164
|
-
|
142
|
+
virtual
|
143
|
+
restricted()
|
165
144
|
returns(NftId nftId)
|
166
145
|
{
|
167
146
|
_verifyObjectInfo(info, BUNDLE());
|
@@ -170,7 +149,8 @@ contract RegistryService is
|
|
170
149
|
|
171
150
|
function registerStake(IRegistry.ObjectInfo memory info)
|
172
151
|
external
|
173
|
-
|
152
|
+
virtual
|
153
|
+
restricted()
|
174
154
|
returns(NftId nftId)
|
175
155
|
{
|
176
156
|
_verifyObjectInfo(info, STAKE());
|
@@ -185,6 +165,7 @@ contract RegistryService is
|
|
185
165
|
address expectedOwner // assume can be 0 when given by other service
|
186
166
|
)
|
187
167
|
internal
|
168
|
+
virtual
|
188
169
|
view
|
189
170
|
returns(
|
190
171
|
IRegistry.ObjectInfo memory info
|
@@ -224,6 +205,7 @@ contract RegistryService is
|
|
224
205
|
ObjectType expectedType
|
225
206
|
)
|
226
207
|
internal
|
208
|
+
virtual
|
227
209
|
view
|
228
210
|
{
|
229
211
|
if(info.objectAddress > address(0)) {
|
@@ -240,8 +222,15 @@ contract RegistryService is
|
|
240
222
|
revert ErrorRegistryServiceObjectOwnerZero(info.objectType);
|
241
223
|
}
|
242
224
|
|
243
|
-
if(
|
244
|
-
revert
|
225
|
+
if(owner == msg.sender) {
|
226
|
+
revert ErrorRegistryServiceInvalidInitialOwner(owner);
|
227
|
+
}
|
228
|
+
|
229
|
+
if(getRegistry().isRegistered(owner)) {
|
230
|
+
ObjectType ownerType = getRegistry().getObjectInfo(owner).objectType;
|
231
|
+
if(ownerType == REGISTRY() || ownerType == STAKING() || ownerType == SERVICE() || ownerType == INSTANCE()) {
|
232
|
+
revert ErrorRegistryServiceObjectOwnerRegistered(info.objectType, owner);
|
233
|
+
}
|
245
234
|
}
|
246
235
|
}
|
247
236
|
|
@@ -21,7 +21,6 @@ contract RegistryServiceManager is
|
|
21
21
|
address registry, // used by implementation
|
22
22
|
bytes32 salt
|
23
23
|
)
|
24
|
-
ProxyManager(registry)
|
25
24
|
{
|
26
25
|
if(authority == address(0)) {
|
27
26
|
revert ErrorRegistryAccessManagerAuthorityZero();
|
@@ -32,8 +31,9 @@ contract RegistryServiceManager is
|
|
32
31
|
}
|
33
32
|
|
34
33
|
RegistryService srv = new RegistryService{ salt: salt }();
|
35
|
-
bytes memory data = abi.encode(
|
36
|
-
IVersionable versionable =
|
34
|
+
bytes memory data = abi.encode(authority, registry);
|
35
|
+
IVersionable versionable = initialize(
|
36
|
+
registry,
|
37
37
|
address(srv),
|
38
38
|
data,
|
39
39
|
salt);
|
@@ -0,0 +1,195 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {IAccess} from "../authorization/IAccess.sol";
|
5
|
+
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
6
|
+
import {IService} from "../shared/IService.sol";
|
7
|
+
import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
|
8
|
+
|
9
|
+
import {AccessAdmin} from "../authorization/AccessAdmin.sol";
|
10
|
+
import {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
|
11
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
12
|
+
import {ObjectType, ObjectTypeLib, RELEASE} from "../type/ObjectType.sol";
|
13
|
+
import {RoleId, ADMIN_ROLE, RELEASE_REGISTRY_ROLE} from "../type/RoleId.sol";
|
14
|
+
import {Str} from "../type/String.sol";
|
15
|
+
import {VersionPart} from "../type/Version.sol";
|
16
|
+
|
17
|
+
|
18
|
+
/// @dev The ReleaseAdmin contract implements the central authorization for the services of a specific release.
|
19
|
+
/// There is one ReleaseAdmin contract per major GIF release.
|
20
|
+
/// Locking/unlocking of all services of a release is implemented in function setReleaseLocked.
|
21
|
+
contract ReleaseAdmin is
|
22
|
+
AccessAdmin
|
23
|
+
{
|
24
|
+
event LogReleaseAdminReleaseLockChanged(VersionPart release, bool locked);
|
25
|
+
event LogReleaseAdminServiceLockChanged(VersionPart release, address service, bool locked);
|
26
|
+
|
27
|
+
error ErrorReleaseAdminCallerNotReleaseRegistry(address caller);
|
28
|
+
error ErrorReleaseAdminNotService(address notService);
|
29
|
+
error ErrorReleaseAdminReleaseLockAlreadySetTo(bool locked);
|
30
|
+
|
31
|
+
/// @dev release core roles
|
32
|
+
string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistry_Role";
|
33
|
+
|
34
|
+
/// @dev release core targets
|
35
|
+
string public constant RELEASE_ADMIN_TARGET_NAME = "ReleaseAdmin";
|
36
|
+
|
37
|
+
IServiceAuthorization internal _serviceAuthorization;
|
38
|
+
|
39
|
+
|
40
|
+
modifier onlyReleaseRegistry() {
|
41
|
+
(bool isMember, ) = _authority.hasRole(RELEASE_REGISTRY_ROLE().toInt(), msg.sender);
|
42
|
+
if(!isMember) {
|
43
|
+
revert ErrorReleaseAdminCallerNotReleaseRegistry(msg.sender);
|
44
|
+
}
|
45
|
+
_;
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
// @dev Only used for master release admin
|
50
|
+
constructor(address accessManager) {
|
51
|
+
initialize(
|
52
|
+
accessManager,
|
53
|
+
"MasterReleaseAdmin");
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
function completeSetup(
|
58
|
+
address registry,
|
59
|
+
address authorization,
|
60
|
+
VersionPart release,
|
61
|
+
address releaseRegistry
|
62
|
+
)
|
63
|
+
external
|
64
|
+
reinitializer(uint64(release.toInt()))
|
65
|
+
{
|
66
|
+
|
67
|
+
// checks
|
68
|
+
AccessAdminLib.checkRegistry(registry);
|
69
|
+
|
70
|
+
AccessManagerCloneable(
|
71
|
+
authority()).completeSetup(
|
72
|
+
registry,
|
73
|
+
release);
|
74
|
+
|
75
|
+
IServiceAuthorization serviceAuthorization = IServiceAuthorization(authorization);
|
76
|
+
_checkAuthorization(address(serviceAuthorization), RELEASE(), release, true, true);
|
77
|
+
_serviceAuthorization = serviceAuthorization;
|
78
|
+
|
79
|
+
// link nft ownability to registry
|
80
|
+
_linkToNftOwnable(registry);
|
81
|
+
|
82
|
+
// setup release contract
|
83
|
+
_setupReleaseRegistry(releaseRegistry);
|
84
|
+
|
85
|
+
// relase services will be authorized one by one via authorizeService()
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
/// @dev Sets up authorizaion for specified service.
|
90
|
+
/// For all authorized services its authorized functions are enabled.
|
91
|
+
/// Permissioned function: Access is restricted to release registry.
|
92
|
+
function authorizeService(
|
93
|
+
IService service,
|
94
|
+
ObjectType serviceDomain,
|
95
|
+
VersionPart release
|
96
|
+
)
|
97
|
+
external
|
98
|
+
restricted()
|
99
|
+
{
|
100
|
+
_createServiceTargetAndRole(service, serviceDomain, release);
|
101
|
+
|
102
|
+
// authorize functions of service
|
103
|
+
Str serviceTarget = _serviceAuthorization.getServiceTarget(serviceDomain);
|
104
|
+
RoleId[] memory authorizedRoles = _serviceAuthorization.getAuthorizedRoles(serviceTarget);
|
105
|
+
|
106
|
+
for (uint256 i = 0; i < authorizedRoles.length; i++) {
|
107
|
+
_authorizeFunctions(
|
108
|
+
IAuthorization(address(_serviceAuthorization)),
|
109
|
+
serviceTarget,
|
110
|
+
authorizedRoles[i]);
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
|
115
|
+
/// @dev Locks/unlocks all release targets.
|
116
|
+
/// For all authorized services of release its authorized functions are disabled/enabled.
|
117
|
+
/// Permissioned function: Access is restricted to release registry.
|
118
|
+
/// Note: onlyReleaseRegistry() modifier is used to prevent dead lock.
|
119
|
+
function setReleaseLocked(bool locked)
|
120
|
+
external
|
121
|
+
onlyReleaseRegistry()
|
122
|
+
{
|
123
|
+
// checks
|
124
|
+
AccessManagerCloneable accessManager = AccessManagerCloneable(authority());
|
125
|
+
if(accessManager.isLocked() == locked) {
|
126
|
+
revert ErrorReleaseAdminReleaseLockAlreadySetTo(locked);
|
127
|
+
}
|
128
|
+
|
129
|
+
// effects
|
130
|
+
accessManager.setLocked(locked);
|
131
|
+
|
132
|
+
emit LogReleaseAdminReleaseLockChanged(getRelease(), locked);
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
/// @dev Lock/unlock specific service of release.
|
137
|
+
/// Permissioned function: Access is restricted to release registry.
|
138
|
+
function setServiceLocked(IService service, bool locked)
|
139
|
+
external
|
140
|
+
restricted()
|
141
|
+
{
|
142
|
+
// assume all targets except release admin are services
|
143
|
+
// ensure release admin can not be locked
|
144
|
+
if(address(service) == address(this)) {
|
145
|
+
revert ErrorReleaseAdminNotService(address(service));
|
146
|
+
}
|
147
|
+
|
148
|
+
_setTargetLocked(address(service), locked);
|
149
|
+
|
150
|
+
emit LogReleaseAdminServiceLockChanged(service.getRelease(), address(service), locked);
|
151
|
+
}
|
152
|
+
|
153
|
+
//--- private functions -------------------------------------------------//
|
154
|
+
|
155
|
+
function _createServiceTargetAndRole(
|
156
|
+
IService service,
|
157
|
+
ObjectType serviceDomain,
|
158
|
+
VersionPart release
|
159
|
+
)
|
160
|
+
private
|
161
|
+
{
|
162
|
+
string memory baseName = ObjectTypeLib.toName(serviceDomain);
|
163
|
+
|
164
|
+
// create service target
|
165
|
+
string memory serviceTargetName = ObjectTypeLib.toVersionedName(
|
166
|
+
baseName, "Service", release);
|
167
|
+
|
168
|
+
_createUncheckedTarget(address(service), serviceTargetName, TargetType.Service);
|
169
|
+
}
|
170
|
+
|
171
|
+
//--- private initialization functions -------------------------------------------//
|
172
|
+
|
173
|
+
function _setupReleaseRegistry(address releaseRegistry)
|
174
|
+
private
|
175
|
+
onlyInitializing()
|
176
|
+
{
|
177
|
+
_createManagedTarget(address(this), RELEASE_ADMIN_TARGET_NAME, IAccess.TargetType.Core);
|
178
|
+
|
179
|
+
_createRole(
|
180
|
+
RELEASE_REGISTRY_ROLE(),
|
181
|
+
AccessAdminLib.toRole({
|
182
|
+
adminRoleId: ADMIN_ROLE(),
|
183
|
+
roleType: RoleType.Contract,
|
184
|
+
maxMemberCount: 1,
|
185
|
+
name: RELEASE_REGISTRY_ROLE_NAME}));
|
186
|
+
|
187
|
+
FunctionInfo[] memory functions;
|
188
|
+
functions = new FunctionInfo[](2);
|
189
|
+
functions[0] = AccessAdminLib.toFunction(ReleaseAdmin.authorizeService.selector, "authorizeService");
|
190
|
+
functions[1] = AccessAdminLib.toFunction(ReleaseAdmin.setServiceLocked.selector, "setServiceLocked");
|
191
|
+
_authorizeTargetFunctions(address(this), RELEASE_REGISTRY_ROLE(), functions, true);
|
192
|
+
|
193
|
+
_grantRoleToAccount(RELEASE_REGISTRY_ROLE(), releaseRegistry);
|
194
|
+
}
|
195
|
+
}
|