@etherisc/gif-next 0.0.2-7d7c399-079 → 0.0.2-7d91021-862
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 +63 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +91 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +603 -280
- 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 +8 -39
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +409 -33
- 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 +487 -207
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -154
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -98
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +512 -204
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -77
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -97
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +358 -82
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -110
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +355 -52
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -142
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +128 -178
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +380 -45
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +355 -52
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +360 -193
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +380 -45
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +88 -45
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +472 -28
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +345 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +510 -85
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +892 -408
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +327 -64
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +674 -494
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +377 -64
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -55
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1328 -2007
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +141 -85
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- 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 +2 -2
- 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 +33 -45
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
- 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 +19 -31
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -31
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +96 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +355 -52
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +280 -209
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +117 -71
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +174 -87
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -41
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +306 -166
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -41
- 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 +547 -340
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +145 -71
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +103 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +137 -139
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +113 -87
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +45 -23
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +133 -65
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +50 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -52
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +231 -19
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +245 -161
- 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 +126 -80
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +100 -70
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +40 -52
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +279 -43
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +91 -41
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +52 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +90 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +713 -414
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +76 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +784 -427
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +188 -124
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -31
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +206 -252
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +110 -72
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -31
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +111 -157
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -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 +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -31
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -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 +21 -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/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
- 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 +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +62 -161
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1453 -153
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +187 -107
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -239
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +129 -70
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +229 -157
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +87 -53
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
- 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 +10 -10
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
- 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 +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.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 +33 -31
- 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 +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 +9 -4
- 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 +45 -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/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 +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -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 +65 -27
- 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 +15 -3
- package/contracts/accounting/IAccountingService.sol +4 -2
- package/contracts/authorization/AccessAdmin.sol +396 -275
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +40 -31
- package/contracts/authorization/Authorization.sol +142 -262
- package/contracts/authorization/IAccess.sol +25 -7
- package/contracts/authorization/IAccessAdmin.sol +83 -79
- package/contracts/authorization/IAuthorization.sol +9 -43
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +248 -34
- package/contracts/distribution/BasicDistribution.sol +14 -13
- package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
- package/contracts/distribution/Distribution.sol +22 -64
- package/contracts/distribution/DistributionService.sol +166 -75
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +34 -19
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
- package/contracts/examples/fire/FireProduct.sol +7 -12
- package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -5
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleProduct.sol +94 -27
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/BundleSet.sol +4 -4
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +103 -13
- package/contracts/instance/IInstanceService.sol +54 -7
- package/contracts/instance/Instance.sol +177 -61
- package/contracts/instance/InstanceAdmin.sol +249 -196
- package/contracts/instance/InstanceAuthorizationV3.sol +117 -67
- package/contracts/instance/InstanceReader.sol +398 -382
- package/contracts/instance/InstanceService.sol +283 -173
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +14 -5
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/instance/base/ObjectSet.sol +7 -8
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +15 -6
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +3 -6
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +4 -8
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -18
- package/contracts/pool/BasicPoolAuthorization.sol +29 -16
- package/contracts/pool/BundleService.sol +57 -96
- package/contracts/pool/IBundleService.sol +27 -32
- package/contracts/pool/IPoolService.sol +57 -40
- package/contracts/pool/Pool.sol +15 -29
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +189 -190
- package/contracts/product/ApplicationService.sol +85 -17
- package/contracts/product/BasicProduct.sol +2 -5
- package/contracts/product/BasicProductAuthorization.sol +31 -9
- package/contracts/product/ClaimService.sol +112 -194
- package/contracts/product/IApplicationService.sol +24 -2
- package/contracts/product/IClaimService.sol +6 -6
- package/contracts/product/IPolicyService.sol +20 -8
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +110 -201
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PricingService.sol +33 -31
- package/contracts/product/Product.sol +61 -33
- package/contracts/product/RiskService.sol +63 -25
- package/contracts/registry/IRegistry.sol +17 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +19 -9
- package/contracts/registry/RegistryAdmin.sol +100 -253
- package/contracts/registry/RegistryAuthorization.sol +336 -0
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +62 -112
- package/contracts/registry/ReleaseRegistry.sol +57 -43
- package/contracts/registry/ServiceAuthorizationV3.sol +131 -31
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +19 -35
- package/contracts/shared/ComponentService.sol +281 -290
- package/contracts/shared/ContractLib.sol +137 -77
- package/contracts/shared/IComponent.sol +1 -4
- package/contracts/shared/IComponentService.sol +21 -26
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +8 -13
- package/contracts/shared/NftOwnable.sol +4 -2
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Registerable.sol +1 -4
- package/contracts/shared/Service.sol +6 -4
- package/contracts/shared/TokenHandler.sol +44 -91
- package/contracts/staking/IStaking.sol +266 -72
- package/contracts/staking/IStakingService.sol +45 -75
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +475 -204
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +58 -77
- package/contracts/staking/StakingService.sol +62 -180
- package/contracts/staking/StakingServiceManager.sol +6 -4
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +15 -15
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +69 -52
- package/contracts/type/RiskId.sol +4 -3
- package/contracts/type/RoleId.sol +60 -45
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -2
- package/contracts/type/UFixed.sol +28 -10
- package/contracts/type/Version.sol +39 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +25 -11
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- 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/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -5,19 +5,26 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
|
|
5
5
|
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
6
6
|
import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
|
7
7
|
|
8
|
-
import {
|
9
|
-
import {ContractLib} from "../shared/ContractLib.sol";
|
8
|
+
import {IAccess} from "./IAccess.sol";
|
10
9
|
import {IAccessAdmin} from "./IAccessAdmin.sol";
|
10
|
+
import {IAuthorization} from "./IAuthorization.sol";
|
11
11
|
import {IRegistry} from "../registry/IRegistry.sol";
|
12
|
+
|
13
|
+
import {ADMIN_ROLE_NAME, PUBLIC_ROLE_NAME} from "./AccessAdmin.sol";
|
14
|
+
import {AccessAdminLib} from "./AccessAdminLib.sol";
|
15
|
+
import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
|
16
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
17
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
18
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
12
19
|
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
|
-
import {Selector,
|
20
|
+
import {Selector, SelectorSetLib} from "../type/Selector.sol";
|
14
21
|
import {Str, StrLib} from "../type/String.sol";
|
15
22
|
import {TimestampLib} from "../type/Timestamp.sol";
|
16
23
|
import {VersionPart} from "../type/Version.sol";
|
17
24
|
|
18
|
-
|
19
|
-
|
20
|
-
|
25
|
+
function ADMIN_ROLE_NAME() pure returns (string memory) { return "AdminRole"; }
|
26
|
+
function PUBLIC_ROLE_NAME() pure returns (string memory) { return "PublicRole"; }
|
27
|
+
|
21
28
|
|
22
29
|
/**
|
23
30
|
* @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
|
@@ -31,16 +38,23 @@ contract AccessAdmin is
|
|
31
38
|
{
|
32
39
|
using EnumerableSet for EnumerableSet.AddressSet;
|
33
40
|
|
34
|
-
|
35
|
-
string
|
41
|
+
/// @dev admin name used for logging only
|
42
|
+
string internal _adminName;
|
36
43
|
|
37
|
-
/// @dev the
|
44
|
+
/// @dev the access manager driving the access admin contract
|
45
|
+
/// hold link to registry and release version
|
38
46
|
AccessManagerCloneable internal _authority;
|
39
47
|
|
48
|
+
/// @dev the authorization contract used for initial access control
|
49
|
+
IAuthorization internal _authorization;
|
50
|
+
|
40
51
|
/// @dev stores the deployer address and allows to create initializers
|
41
52
|
/// that are restricted to the deployer address.
|
42
53
|
address internal _deployer;
|
43
54
|
|
55
|
+
/// @dev the linked NFT ID
|
56
|
+
NftId internal _linkedNftId;
|
57
|
+
|
44
58
|
/// @dev store role info per role id
|
45
59
|
mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
|
46
60
|
|
@@ -71,6 +85,9 @@ contract AccessAdmin is
|
|
71
85
|
/// @dev temporary dynamic functions array
|
72
86
|
bytes4[] private _functions;
|
73
87
|
|
88
|
+
// @dev target type specific role id counters
|
89
|
+
mapping(TargetType => uint64) internal _nextRoleId;
|
90
|
+
|
74
91
|
modifier onlyDeployer() {
|
75
92
|
// special case for cloned AccessAdmin contracts
|
76
93
|
// IMPORTANT cloning and initialize authority needs to be done in a single transaction
|
@@ -79,79 +96,73 @@ contract AccessAdmin is
|
|
79
96
|
}
|
80
97
|
|
81
98
|
if (msg.sender != _deployer) {
|
82
|
-
revert
|
83
|
-
}
|
84
|
-
_;
|
85
|
-
}
|
86
|
-
|
87
|
-
modifier onlyRoleAdmin(RoleId roleId) {
|
88
|
-
_checkRoleExists(roleId, false);
|
89
|
-
|
90
|
-
if (!hasAdminRole(msg.sender, roleId)) {
|
91
|
-
revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
|
99
|
+
revert ErrorAccessAdminNotDeployer();
|
92
100
|
}
|
93
101
|
_;
|
94
102
|
}
|
95
103
|
|
96
|
-
modifier onlyRoleMember(RoleId roleId) {
|
97
|
-
if (!hasRole(msg.sender, roleId)) {
|
98
|
-
revert ErrorNotRoleOwner(roleId);
|
99
|
-
}
|
100
|
-
_;
|
101
|
-
}
|
102
|
-
|
103
|
-
modifier onlyExistingRole(
|
104
|
-
RoleId roleId,
|
105
|
-
bool onlyActiveRole,
|
106
|
-
bool allowLockedRoles
|
107
|
-
)
|
108
|
-
{
|
109
|
-
if (!allowLockedRoles) {
|
110
|
-
_checkRoleExists(roleId, onlyActiveRole);
|
111
|
-
}
|
112
|
-
_;
|
113
|
-
}
|
114
|
-
|
115
|
-
modifier onlyExistingTarget(address target) {
|
116
|
-
_checkTarget(target);
|
117
|
-
_;
|
118
|
-
}
|
119
104
|
|
120
105
|
//-------------- initialization functions ------------------------------//
|
121
106
|
|
122
|
-
// event LogAccessAdminDebug(string message);
|
123
|
-
|
124
107
|
/// @dev Initializes this admin with the provided accessManager (and authorization specification).
|
125
108
|
/// Internally initializes access manager with this admin and creates basic role setup.
|
126
109
|
function initialize(
|
127
|
-
|
110
|
+
address authority,
|
111
|
+
string memory adminName
|
128
112
|
)
|
129
113
|
public
|
130
114
|
initializer()
|
131
115
|
{
|
132
|
-
__AccessAdmin_init(authority);
|
116
|
+
__AccessAdmin_init(authority, adminName);
|
133
117
|
}
|
134
118
|
|
135
119
|
|
136
120
|
function __AccessAdmin_init(
|
137
|
-
|
121
|
+
address authority,
|
122
|
+
string memory adminName
|
138
123
|
)
|
139
124
|
internal
|
140
125
|
onlyInitializing()
|
141
|
-
onlyDeployer()
|
126
|
+
onlyDeployer()
|
142
127
|
{
|
143
|
-
|
128
|
+
// checks
|
129
|
+
// only contract check (authority might not yet be initialized at this time)
|
130
|
+
if (!ContractLib.isContract(authority)) {
|
131
|
+
revert ErrorAccessAdminAuthorityNotContract(authority);
|
132
|
+
}
|
133
|
+
|
134
|
+
// check name not empty
|
135
|
+
if (bytes(adminName).length == 0) {
|
136
|
+
revert ErrorAccessAdminAccessManagerEmptyName();
|
137
|
+
}
|
138
|
+
|
139
|
+
_authority = AccessManagerCloneable(authority);
|
140
|
+
_authority.initialize(address(this));
|
141
|
+
|
142
|
+
// delayed additional check for authority after its initialization
|
143
|
+
if (!ContractLib.isAuthority(authority)) {
|
144
|
+
revert ErrorAccessAdminAccessManagerNotAccessManager(authority);
|
145
|
+
}
|
144
146
|
|
147
|
+
// effects
|
145
148
|
// set and initialize this access manager contract as
|
146
149
|
// the admin (ADMIN_ROLE) of the provided authority
|
147
|
-
__AccessManaged_init(
|
148
|
-
|
150
|
+
__AccessManaged_init(authority);
|
151
|
+
|
152
|
+
// set name for logging
|
153
|
+
_adminName = adminName;
|
154
|
+
|
155
|
+
// set initial linked NFT ID to zero
|
156
|
+
_linkedNftId = NftIdLib.zero();
|
149
157
|
|
150
158
|
// create admin and public roles
|
151
159
|
_initializeAdminAndPublicRoles();
|
160
|
+
}
|
161
|
+
|
162
|
+
//--- view functions for access amdin ---------------------------------------//
|
152
163
|
|
153
|
-
|
154
|
-
|
164
|
+
function getRelease() public view virtual returns (VersionPart release) {
|
165
|
+
return _authority.getRelease();
|
155
166
|
}
|
156
167
|
|
157
168
|
|
@@ -160,46 +171,24 @@ contract AccessAdmin is
|
|
160
171
|
}
|
161
172
|
|
162
173
|
|
163
|
-
function
|
164
|
-
return
|
174
|
+
function getLinkedNftId() external view returns (NftId linkedNftId) {
|
175
|
+
return _linkedNftId;
|
165
176
|
}
|
166
177
|
|
167
178
|
|
168
|
-
function
|
169
|
-
|
170
|
-
|
171
|
-
onlyInitializing()
|
172
|
-
{
|
173
|
-
RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
|
174
|
-
|
175
|
-
// setup admin role
|
176
|
-
_createRoleUnchecked(
|
177
|
-
ADMIN_ROLE(),
|
178
|
-
toRole({
|
179
|
-
adminRoleId: ADMIN_ROLE(),
|
180
|
-
roleType: RoleType.Contract,
|
181
|
-
maxMemberCount: 1,
|
182
|
-
name: ADMIN_ROLE_NAME}));
|
179
|
+
function getLinkedOwner() external view returns (address linkedOwner) {
|
180
|
+
return getRegistry().ownerOf(_linkedNftId);
|
181
|
+
}
|
183
182
|
|
184
|
-
// add this contract as admin role member
|
185
|
-
_roleMembers[adminRoleId].add(address(this));
|
186
183
|
|
187
|
-
|
188
|
-
|
189
|
-
PUBLIC_ROLE(),
|
190
|
-
toRole({
|
191
|
-
adminRoleId: ADMIN_ROLE(),
|
192
|
-
roleType: RoleType.Gif,
|
193
|
-
maxMemberCount: type(uint32).max,
|
194
|
-
name: PUBLIC_ROLE_NAME}));
|
184
|
+
function getAuthorization() public view returns (IAuthorization authorization) {
|
185
|
+
return _authorization;
|
195
186
|
}
|
196
187
|
|
197
188
|
|
198
|
-
function
|
199
|
-
|
200
|
-
|
201
|
-
onlyInitializing()
|
202
|
-
{ }
|
189
|
+
function isLocked() public view returns (bool locked) {
|
190
|
+
return _authority.isLocked();
|
191
|
+
}
|
203
192
|
|
204
193
|
//--- view functions for roles ------------------------------------------//
|
205
194
|
|
@@ -219,16 +208,33 @@ contract AccessAdmin is
|
|
219
208
|
return RoleId.wrap(_authority.PUBLIC_ROLE());
|
220
209
|
}
|
221
210
|
|
211
|
+
function roleExists(string memory name) public view returns (bool exists) {
|
212
|
+
// special case for admin and public roles
|
213
|
+
if (StrLib.eq(name, ADMIN_ROLE_NAME()) || StrLib.eq(name, PUBLIC_ROLE_NAME())) {
|
214
|
+
return true;
|
215
|
+
}
|
216
|
+
|
217
|
+
return _roleForName[StrLib.toStr(name)].roleId.gtz();
|
218
|
+
}
|
219
|
+
|
222
220
|
function roleExists(RoleId roleId) public view returns (bool exists) {
|
223
221
|
return _roleInfo[roleId].createdAt.gtz();
|
224
222
|
}
|
225
223
|
|
226
|
-
function
|
224
|
+
function getRoleForName(string memory name) public view returns (RoleId roleId) {
|
225
|
+
return _roleForName[StrLib.toStr(name)].roleId;
|
226
|
+
}
|
227
|
+
|
228
|
+
function getRoleInfo(RoleId roleId) public view returns (RoleInfo memory) {
|
227
229
|
return _roleInfo[roleId];
|
228
230
|
}
|
229
231
|
|
230
|
-
function
|
231
|
-
return
|
232
|
+
function isRoleActive(RoleId roleId) external view returns (bool isActive) {
|
233
|
+
return _roleInfo[roleId].pausedAt > TimestampLib.current();
|
234
|
+
}
|
235
|
+
|
236
|
+
function isRoleCustom(RoleId roleId) external view returns (bool isActive) {
|
237
|
+
return _roleInfo[roleId].roleType == RoleType.Custom;
|
232
238
|
}
|
233
239
|
|
234
240
|
function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
|
@@ -239,21 +245,15 @@ contract AccessAdmin is
|
|
239
245
|
return _roleMembers[roleId].at(idx);
|
240
246
|
}
|
241
247
|
|
242
|
-
|
243
|
-
function hasRole(address account, RoleId roleId) public view returns (bool) {
|
248
|
+
function isRoleMember(RoleId roleId, address account) public view returns (bool) {
|
244
249
|
(bool isMember, ) = _authority.hasRole(
|
245
250
|
RoleId.unwrap(roleId),
|
246
251
|
account);
|
247
252
|
return isMember;
|
248
253
|
}
|
249
254
|
|
250
|
-
function
|
251
|
-
|
252
|
-
virtual
|
253
|
-
view
|
254
|
-
returns (bool)
|
255
|
-
{
|
256
|
-
return hasRole(account, _roleInfo[roleId].adminRoleId);
|
255
|
+
function isRoleAdmin(RoleId roleId, address account) public virtual view returns (bool) {
|
256
|
+
return isRoleMember(_roleInfo[roleId].adminRoleId, account);
|
257
257
|
}
|
258
258
|
|
259
259
|
//--- view functions for targets ----------------------------------------//
|
@@ -270,7 +270,7 @@ contract AccessAdmin is
|
|
270
270
|
return _targets[idx];
|
271
271
|
}
|
272
272
|
|
273
|
-
function getTargetInfo(address target)
|
273
|
+
function getTargetInfo(address target) public view returns (TargetInfo memory targetInfo) {
|
274
274
|
return _targetInfo[target];
|
275
275
|
}
|
276
276
|
|
@@ -279,7 +279,7 @@ contract AccessAdmin is
|
|
279
279
|
}
|
280
280
|
|
281
281
|
function isTargetLocked(address target) public view returns (bool locked) {
|
282
|
-
return _authority.isTargetClosed(target);
|
282
|
+
return _authority.isLocked() || _authority.isTargetClosed(target);
|
283
283
|
}
|
284
284
|
|
285
285
|
function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
|
@@ -305,132 +305,177 @@ contract AccessAdmin is
|
|
305
305
|
selector.toBytes4()));
|
306
306
|
}
|
307
307
|
|
308
|
-
function
|
309
|
-
|
308
|
+
function deployer() public view returns (address) {
|
309
|
+
return _deployer;
|
310
310
|
}
|
311
311
|
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
});
|
312
|
+
//--- internal/private functions -------------------------------------------------//
|
313
|
+
|
314
|
+
function _linkToNftOwnable(address registerable) internal {
|
315
|
+
if (!getRegistry().isRegistered(registerable)) {
|
316
|
+
revert ErrorAccessAdminNotRegistered(registerable);
|
317
|
+
}
|
318
|
+
|
319
|
+
_linkedNftId = getRegistry().getNftIdForAddress(registerable);
|
321
320
|
}
|
322
321
|
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
322
|
+
|
323
|
+
function _initializeAdminAndPublicRoles()
|
324
|
+
internal
|
325
|
+
virtual
|
326
|
+
onlyInitializing()
|
327
|
+
{
|
328
|
+
// setup admin role
|
329
|
+
_createRoleUnchecked(
|
330
|
+
ADMIN_ROLE(),
|
331
|
+
AccessAdminLib.toRole({
|
332
|
+
adminRoleId: ADMIN_ROLE(),
|
333
|
+
roleType: RoleType.Contract,
|
334
|
+
maxMemberCount: 1,
|
335
|
+
name: ADMIN_ROLE_NAME()}));
|
336
|
+
|
337
|
+
// add this contract as admin role member, as contract roles cannot be revoked
|
338
|
+
// and max member count is 1 for admin role this access admin contract will
|
339
|
+
// always be the only admin of the access manager.
|
340
|
+
_roleMembers[
|
341
|
+
RoleIdLib.toRoleId(_authority.ADMIN_ROLE())].add(address(this));
|
342
|
+
|
343
|
+
// setup public role
|
344
|
+
_createRoleUnchecked(
|
345
|
+
PUBLIC_ROLE(),
|
346
|
+
AccessAdminLib.toRole({
|
347
|
+
adminRoleId: ADMIN_ROLE(),
|
348
|
+
roleType: RoleType.Core,
|
349
|
+
maxMemberCount: type(uint32).max,
|
350
|
+
name: PUBLIC_ROLE_NAME()}));
|
328
351
|
}
|
329
352
|
|
330
|
-
|
331
|
-
|
353
|
+
|
354
|
+
/// @dev Authorize the functions of the target for the specified role.
|
355
|
+
function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
|
356
|
+
internal
|
357
|
+
{
|
358
|
+
_authorizeTargetFunctions(
|
359
|
+
getTargetForName(target),
|
360
|
+
_toAuthorizedRoleId(authorization, roleId),
|
361
|
+
authorization.getAuthorizedFunctions(
|
362
|
+
target,
|
363
|
+
roleId),
|
364
|
+
true);
|
332
365
|
}
|
333
366
|
|
334
|
-
//--- internal/private functions -------------------------------------------------//
|
335
367
|
|
336
|
-
function
|
337
|
-
address target,
|
338
|
-
RoleId roleId,
|
339
|
-
FunctionInfo[] memory functions
|
340
|
-
)
|
368
|
+
function _toAuthorizedRoleId(IAuthorization authorization, RoleId roleId)
|
341
369
|
internal
|
370
|
+
returns (RoleId authorizedRoleId)
|
342
371
|
{
|
343
|
-
|
344
|
-
|
345
|
-
|
372
|
+
// special case for service roles (service roles have predefined role ids)
|
373
|
+
if (roleId.isServiceRole()) {
|
374
|
+
|
375
|
+
// create service role if missing
|
376
|
+
if (!roleExists(roleId)) {
|
377
|
+
_createRole(
|
378
|
+
roleId,
|
379
|
+
AccessAdminLib.toRole(
|
380
|
+
ADMIN_ROLE(),
|
381
|
+
RoleType.Contract,
|
382
|
+
1,
|
383
|
+
authorization.getRoleName(roleId)));
|
384
|
+
}
|
346
385
|
|
347
|
-
|
348
|
-
|
386
|
+
return roleId;
|
387
|
+
}
|
349
388
|
|
350
|
-
|
351
|
-
|
352
|
-
target,
|
353
|
-
roleId,
|
354
|
-
functionSelectors,
|
355
|
-
false); // allowLockedRoles
|
389
|
+
string memory roleName = authorization.getRoleInfo(roleId).name.toString();
|
390
|
+
return authorizedRoleId = getRoleForName(roleName);
|
356
391
|
}
|
357
392
|
|
358
|
-
|
393
|
+
|
394
|
+
function _authorizeTargetFunctions(
|
359
395
|
address target,
|
360
|
-
|
396
|
+
RoleId roleId,
|
397
|
+
FunctionInfo[] memory functions,
|
398
|
+
bool addFunctions
|
361
399
|
)
|
362
400
|
internal
|
363
401
|
{
|
364
|
-
|
365
|
-
|
402
|
+
if (addFunctions && roleId == getAdminRole()) {
|
403
|
+
revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
|
404
|
+
}
|
366
405
|
|
406
|
+
// apply authz via access manager
|
367
407
|
_grantRoleAccessToFunctions(
|
368
408
|
target,
|
369
|
-
|
370
|
-
|
371
|
-
|
409
|
+
roleId,
|
410
|
+
functions,
|
411
|
+
addFunctions); // add functions
|
372
412
|
}
|
373
413
|
|
374
|
-
|
414
|
+
|
415
|
+
/// @dev grant the specified role access to all functions in the provided selector list
|
416
|
+
function _grantRoleAccessToFunctions(
|
375
417
|
address target,
|
418
|
+
RoleId roleId,
|
376
419
|
FunctionInfo[] memory functions,
|
377
420
|
bool addFunctions
|
378
421
|
)
|
379
422
|
internal
|
380
|
-
onlyExistingTarget(target)
|
381
|
-
returns (
|
382
|
-
bytes4[] memory functionSelectors
|
383
|
-
)
|
384
423
|
{
|
385
|
-
|
386
|
-
|
387
|
-
FunctionInfo memory func;
|
388
|
-
Selector selector;
|
424
|
+
_checkTargetExists(target);
|
425
|
+
_checkRoleExists(roleId, true, true);
|
389
426
|
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
// add function selector to target selector set if not in set
|
395
|
-
if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
|
396
|
-
else { SelectorSetLib.remove(_targetFunctions[target], selector); }
|
397
|
-
|
398
|
-
// set function name
|
399
|
-
_functionInfo[target][selector] = func;
|
427
|
+
_authority.setTargetFunctionRole(
|
428
|
+
target,
|
429
|
+
AccessAdminLib.getSelectors(functions),
|
430
|
+
RoleId.unwrap(roleId));
|
400
431
|
|
401
|
-
|
402
|
-
|
432
|
+
// update function set and log function grantings
|
433
|
+
for (uint256 i = 0; i < functions.length; i++) {
|
434
|
+
_updateFunctionAccess(
|
435
|
+
target,
|
436
|
+
roleId,
|
437
|
+
functions[i],
|
438
|
+
addFunctions);
|
403
439
|
}
|
404
440
|
}
|
405
441
|
|
406
|
-
|
407
|
-
function
|
408
|
-
address target,
|
409
|
-
RoleId roleId,
|
410
|
-
|
411
|
-
bool
|
442
|
+
|
443
|
+
function _updateFunctionAccess(
|
444
|
+
address target,
|
445
|
+
RoleId roleId,
|
446
|
+
FunctionInfo memory func,
|
447
|
+
bool addFunction
|
412
448
|
)
|
413
449
|
internal
|
414
|
-
onlyExistingTarget(target)
|
415
|
-
onlyExistingRole(roleId, true, allowLockedRoles)
|
416
450
|
{
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
451
|
+
// update functions info
|
452
|
+
Selector selector = func.selector;
|
453
|
+
_functionInfo[target][selector] = func;
|
454
|
+
|
455
|
+
// update function sets
|
456
|
+
if (addFunction) { SelectorSetLib.add(_targetFunctions[target], selector); }
|
457
|
+
else { SelectorSetLib.remove(_targetFunctions[target], selector); }
|
421
458
|
|
422
|
-
//
|
459
|
+
// logging
|
460
|
+
emit LogAccessAdminFunctionGranted(
|
461
|
+
_adminName,
|
462
|
+
target,
|
463
|
+
string(abi.encodePacked(
|
464
|
+
func.name.toString(),
|
465
|
+
"(): ",
|
466
|
+
_getRoleName(roleId))));
|
423
467
|
}
|
424
468
|
|
425
469
|
|
426
470
|
/// @dev grant the specified role to the provided account
|
427
471
|
function _grantRoleToAccount(RoleId roleId, address account)
|
428
472
|
internal
|
429
|
-
onlyExistingRole(roleId, true, false)
|
430
473
|
{
|
474
|
+
_checkRoleExists(roleId, true, false);
|
475
|
+
|
431
476
|
// check max role members will not be exceeded
|
432
477
|
if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
|
433
|
-
revert
|
478
|
+
revert ErrorAccessAdminRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
|
434
479
|
}
|
435
480
|
|
436
481
|
// check account is contract for contract role
|
@@ -438,37 +483,38 @@ contract AccessAdmin is
|
|
438
483
|
_roleInfo[roleId].roleType == RoleType.Contract &&
|
439
484
|
!ContractLib.isContract(account) // will fail in account's constructor
|
440
485
|
) {
|
441
|
-
revert
|
486
|
+
revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
|
442
487
|
}
|
443
488
|
|
444
|
-
//
|
489
|
+
// effects
|
445
490
|
_roleMembers[roleId].add(account);
|
446
491
|
_authority.grantRole(
|
447
492
|
RoleId.unwrap(roleId),
|
448
493
|
account,
|
449
494
|
0);
|
450
495
|
|
451
|
-
|
496
|
+
emit LogAccessAdminRoleGranted(_adminName, account, _getRoleName(roleId));
|
452
497
|
}
|
453
498
|
|
499
|
+
|
454
500
|
/// @dev revoke the specified role from the provided account
|
455
501
|
function _revokeRoleFromAccount(RoleId roleId, address account)
|
456
502
|
internal
|
457
|
-
onlyExistingRole(roleId, false, false)
|
458
503
|
{
|
504
|
+
_checkRoleExists(roleId, false, false);
|
459
505
|
|
460
|
-
// check
|
506
|
+
// check for attempt to revoke contract role
|
461
507
|
if (_roleInfo[roleId].roleType == RoleType.Contract) {
|
462
|
-
revert
|
508
|
+
revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
|
463
509
|
}
|
464
510
|
|
465
|
-
//
|
511
|
+
// effects
|
466
512
|
_roleMembers[roleId].remove(account);
|
467
513
|
_authority.revokeRole(
|
468
514
|
RoleId.unwrap(roleId),
|
469
515
|
account);
|
470
516
|
|
471
|
-
|
517
|
+
emit LogAccessAdminRoleRevoked(_adminName, account, _roleInfo[roleId].name.toString());
|
472
518
|
}
|
473
519
|
|
474
520
|
|
@@ -480,32 +526,84 @@ contract AccessAdmin is
|
|
480
526
|
)
|
481
527
|
internal
|
482
528
|
{
|
483
|
-
//
|
484
|
-
if(
|
485
|
-
|
486
|
-
roleId,
|
487
|
-
_roleInfo[roleId].name.toString());
|
529
|
+
// skip admin and public roles (they are created during initialization)
|
530
|
+
if (roleId == ADMIN_ROLE() || roleId == PUBLIC_ROLE()) {
|
531
|
+
return;
|
488
532
|
}
|
533
|
+
|
534
|
+
AccessAdminLib.checkRoleCreation(this, roleId, info);
|
535
|
+
_createRoleUnchecked(roleId, info);
|
536
|
+
}
|
489
537
|
|
490
|
-
// check admin role exists
|
491
|
-
if(!roleExists(info.adminRoleId)) {
|
492
|
-
revert ErrorRoleAdminNotExisting(info.adminRoleId);
|
493
|
-
}
|
494
538
|
|
495
|
-
|
496
|
-
|
497
|
-
|
539
|
+
/// @dev Activates or deactivates role.
|
540
|
+
/// The role activ property is indirectly controlled over the pausedAt timestamp.
|
541
|
+
function _setRoleActive(RoleId roleId, bool active)
|
542
|
+
internal
|
543
|
+
{
|
544
|
+
if (active) {
|
545
|
+
_roleInfo[roleId].pausedAt = TimestampLib.max();
|
546
|
+
} else {
|
547
|
+
_roleInfo[roleId].pausedAt = TimestampLib.current();
|
498
548
|
}
|
549
|
+
}
|
499
550
|
|
500
|
-
// check role name is not used for another role
|
501
|
-
if(_roleForName[info.name].exists) {
|
502
|
-
revert ErrorRoleNameAlreadyExists(
|
503
|
-
roleId,
|
504
|
-
info.name.toString(),
|
505
|
-
_roleForName[info.name].roleId);
|
506
|
-
}
|
507
551
|
|
508
|
-
|
552
|
+
function _createManagedTarget(
|
553
|
+
address target,
|
554
|
+
string memory targetName,
|
555
|
+
TargetType targetType
|
556
|
+
)
|
557
|
+
internal
|
558
|
+
returns (RoleId contractRoleId)
|
559
|
+
{
|
560
|
+
return _createTarget(target, targetName, targetType, true);
|
561
|
+
}
|
562
|
+
|
563
|
+
|
564
|
+
function _createUncheckedTarget(
|
565
|
+
address target,
|
566
|
+
string memory targetName,
|
567
|
+
TargetType targetType
|
568
|
+
)
|
569
|
+
internal
|
570
|
+
{
|
571
|
+
_createTarget(target, targetName, targetType, false);
|
572
|
+
}
|
573
|
+
|
574
|
+
|
575
|
+
function _createTarget(
|
576
|
+
address target,
|
577
|
+
string memory targetName,
|
578
|
+
TargetType targetType,
|
579
|
+
bool checkAuthority
|
580
|
+
)
|
581
|
+
private
|
582
|
+
returns (RoleId contractRoleId)
|
583
|
+
{
|
584
|
+
// checks
|
585
|
+
AccessAdminLib.checkTargetCreation(this, target, targetName, checkAuthority);
|
586
|
+
|
587
|
+
// effects
|
588
|
+
contractRoleId = _createTargetUnchecked(
|
589
|
+
target,
|
590
|
+
targetName,
|
591
|
+
targetType,
|
592
|
+
checkAuthority);
|
593
|
+
|
594
|
+
// deal with token handler, if applicable
|
595
|
+
(
|
596
|
+
address tokenHandler,
|
597
|
+
string memory tokenHandlerName
|
598
|
+
) = AccessAdminLib.getTokenHandler(target, targetName, targetType);
|
599
|
+
|
600
|
+
if (tokenHandler != address(0)) {
|
601
|
+
_createTargetUnchecked(
|
602
|
+
tokenHandler,
|
603
|
+
tokenHandlerName,
|
604
|
+
targetType,
|
605
|
+
checkAuthority);
|
606
|
+
}
|
509
607
|
}
|
510
608
|
|
511
609
|
|
@@ -516,7 +614,8 @@ contract AccessAdmin is
|
|
516
614
|
private
|
517
615
|
{
|
518
616
|
// create role info
|
519
|
-
info.createdAt = TimestampLib.
|
617
|
+
info.createdAt = TimestampLib.current();
|
618
|
+
info.pausedAt = TimestampLib.max();
|
520
619
|
_roleInfo[roleId] = info;
|
521
620
|
|
522
621
|
// create role name info
|
@@ -527,133 +626,155 @@ contract AccessAdmin is
|
|
527
626
|
// add role to list of roles
|
528
627
|
_roleIds.push(roleId);
|
529
628
|
|
530
|
-
emit
|
629
|
+
emit LogAccessAdminRoleCreated(_adminName, roleId, info.roleType, info.adminRoleId, info.name.toString());
|
531
630
|
}
|
532
631
|
|
533
632
|
|
534
|
-
|
633
|
+
/// @dev Creates a new target and a corresponding contract role.
|
634
|
+
/// The function assigns the role to the target and logs the creation.
|
635
|
+
function _createTargetUnchecked(
|
535
636
|
address target,
|
536
637
|
string memory targetName,
|
537
|
-
|
538
|
-
bool
|
638
|
+
TargetType targetType,
|
639
|
+
bool managed
|
539
640
|
)
|
540
641
|
internal
|
642
|
+
returns (RoleId targetRoleId)
|
541
643
|
{
|
542
|
-
//
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
Str name = StrLib.toStr(targetName);
|
551
|
-
if(name.length() == 0) {
|
552
|
-
revert ErrorTargetNameEmpty(target);
|
553
|
-
}
|
554
|
-
|
555
|
-
// check target name is not used for another target
|
556
|
-
if( _targetForName[name] != address(0)) {
|
557
|
-
revert ErrorTargetNameAlreadyExists(
|
558
|
-
target,
|
559
|
-
targetName,
|
560
|
-
_targetForName[name]);
|
561
|
-
}
|
562
|
-
|
563
|
-
// check target is an access managed contract
|
564
|
-
if (!_isAccessManaged(target)) {
|
565
|
-
revert ErrorTargetNotAccessManaged(target);
|
566
|
-
}
|
567
|
-
|
568
|
-
// check target shares authority with this contract
|
569
|
-
if (checkAuthority) {
|
570
|
-
address targetAuthority = AccessManagedUpgradeable(target).authority();
|
571
|
-
if (targetAuthority != authority()) {
|
572
|
-
revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
|
573
|
-
}
|
644
|
+
// create target role (if not existing)
|
645
|
+
string memory roleName;
|
646
|
+
(targetRoleId, roleName) = _getOrCreateTargetRoleIdAndName(target, targetName, targetType);
|
647
|
+
|
648
|
+
if (!roleExists(targetRoleId)) {
|
649
|
+
_createRole(
|
650
|
+
targetRoleId,
|
651
|
+
AccessAdminLib.toRole(ADMIN_ROLE(), IAccess.RoleType.Contract, 1, roleName));
|
574
652
|
}
|
575
653
|
|
576
654
|
// create target info
|
655
|
+
Str name = StrLib.toStr(targetName);
|
577
656
|
_targetInfo[target] = TargetInfo({
|
578
657
|
name: name,
|
579
|
-
|
580
|
-
|
658
|
+
targetType: targetType,
|
659
|
+
roleId: targetRoleId,
|
660
|
+
createdAt: TimestampLib.current()
|
581
661
|
});
|
582
662
|
|
583
663
|
// create name to target mapping
|
584
664
|
_targetForName[name] = target;
|
585
665
|
|
586
|
-
// add
|
666
|
+
// add target to list of targets
|
587
667
|
_targets.push(target);
|
588
668
|
|
589
|
-
|
669
|
+
// grant contract role to target
|
670
|
+
_grantRoleToAccount(targetRoleId, target);
|
671
|
+
|
672
|
+
emit LogAccessAdminTargetCreated(_adminName, targetName, managed, target, targetRoleId);
|
590
673
|
}
|
591
674
|
|
592
675
|
|
593
|
-
function
|
676
|
+
function _getOrCreateTargetRoleIdAndName(
|
677
|
+
address target,
|
678
|
+
string memory targetName,
|
679
|
+
TargetType targetType
|
680
|
+
)
|
594
681
|
internal
|
595
|
-
|
596
|
-
|
682
|
+
returns (
|
683
|
+
RoleId roleId,
|
684
|
+
string memory roleName
|
685
|
+
)
|
597
686
|
{
|
598
|
-
|
599
|
-
|
687
|
+
// get roleId
|
688
|
+
if (targetType == TargetType.Service || targetType == TargetType.GenericService) {
|
689
|
+
roleId = AccessAdminLib.getServiceRoleId(target, targetType);
|
690
|
+
} else {
|
691
|
+
roleId = AccessAdminLib.getTargetRoleId(target, targetType, _nextRoleId[targetType]);
|
692
|
+
|
693
|
+
// increment target type specific role id counter
|
694
|
+
_nextRoleId[targetType]++;
|
600
695
|
}
|
601
696
|
|
602
|
-
|
603
|
-
|
604
|
-
IAccessManagedChecker.authority.selector));
|
605
|
-
|
606
|
-
return success;
|
697
|
+
// create role name
|
698
|
+
roleName = AccessAdminLib.toRoleName(targetName);
|
607
699
|
}
|
608
700
|
|
609
701
|
|
610
|
-
function
|
702
|
+
function _setTargetLocked(address target, bool locked)
|
611
703
|
internal
|
612
704
|
{
|
613
|
-
|
705
|
+
_checkTargetExists(target);
|
706
|
+
_authority.setTargetClosed(target, locked);
|
707
|
+
}
|
614
708
|
|
615
|
-
|
616
|
-
|
617
|
-
|
709
|
+
|
710
|
+
function _getRoleName(RoleId roleId) internal view returns (string memory) {
|
711
|
+
if (roleExists(roleId)) {
|
712
|
+
return _roleInfo[roleId].name.toString();
|
618
713
|
}
|
714
|
+
return "<unknown-role>";
|
715
|
+
}
|
619
716
|
|
620
|
-
|
717
|
+
|
718
|
+
function _checkAuthorization(
|
719
|
+
address authorization,
|
720
|
+
ObjectType expectedDomain,
|
721
|
+
VersionPart expectedRelease,
|
722
|
+
bool expectServiceAuthorization,
|
723
|
+
bool checkAlreadyInitialized
|
724
|
+
)
|
725
|
+
internal
|
726
|
+
view
|
727
|
+
{
|
728
|
+
AccessAdminLib.checkAuthorization(
|
729
|
+
address(_authorization),
|
730
|
+
authorization,
|
731
|
+
expectedDomain,
|
732
|
+
expectedRelease,
|
733
|
+
expectServiceAuthorization,
|
734
|
+
checkAlreadyInitialized);
|
621
735
|
}
|
622
736
|
|
623
737
|
|
624
|
-
function _checkRoleExists(
|
738
|
+
function _checkRoleExists(
|
625
739
|
RoleId roleId,
|
626
|
-
bool onlyActiveRole
|
740
|
+
bool onlyActiveRole,
|
741
|
+
bool allowAdminAndPublicRoles
|
627
742
|
)
|
628
743
|
internal
|
629
744
|
view
|
630
745
|
{
|
631
746
|
if (!roleExists(roleId)) {
|
632
|
-
revert
|
747
|
+
revert ErrorAccessAdminRoleUnknown(roleId);
|
633
748
|
}
|
634
749
|
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
750
|
+
if (!allowAdminAndPublicRoles) {
|
751
|
+
if (roleId == ADMIN_ROLE()) {
|
752
|
+
revert ErrorAccessAdminInvalidUserOfAdminRole();
|
753
|
+
}
|
754
|
+
|
755
|
+
// check role is not public role
|
756
|
+
if (roleId == PUBLIC_ROLE()) {
|
757
|
+
revert ErrorAccessAdminInvalidUserOfPublicRole();
|
758
|
+
}
|
641
759
|
}
|
642
760
|
|
643
761
|
// check if role is disabled
|
644
|
-
if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.
|
645
|
-
revert
|
762
|
+
if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.current()) {
|
763
|
+
revert ErrorAccessAdminRoleIsPaused(roleId);
|
646
764
|
}
|
647
765
|
}
|
648
766
|
|
649
767
|
|
650
768
|
/// @dev check if target exists and reverts if it doesn't
|
651
|
-
function
|
769
|
+
function _checkTargetExists(
|
770
|
+
address target
|
771
|
+
)
|
652
772
|
internal
|
653
773
|
view
|
654
774
|
{
|
775
|
+
// check not yet created
|
655
776
|
if (!targetExists(target)) {
|
656
|
-
revert
|
777
|
+
revert ErrorAccessAdminTargetNotCreated(target);
|
657
778
|
}
|
658
779
|
}
|
659
780
|
}
|