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