@etherisc/gif-next 0.0.2-e79d227-681 → 0.0.2-e7a5428-226
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 +57 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +640 -269
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +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 +525 -213
- 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 +105 -185
- 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 +58 -127
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +533 -218
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -82
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +37 -106
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +379 -79
- 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 +183 -128
- 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 +324 -250
- 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 +191 -182
- 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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +94 -100
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +196 -155
- 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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +600 -296
- 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 +88 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +482 -50
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +373 -13
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +493 -85
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1017 -334
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +380 -52
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +914 -554
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +377 -80
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -57
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +690 -566
- 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 +77 -81
- 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 +41 -45
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +61 -65
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +120 -68
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -55
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -114
- 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 +304 -226
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +120 -76
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +200 -89
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +59 -63
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +333 -169
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +72 -76
- 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 +574 -360
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +146 -74
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +293 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +106 -46
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +193 -182
- 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 +292 -195
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +127 -99
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +235 -4
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +160 -68
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +168 -157
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +278 -187
- 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 +129 -85
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +135 -126
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +103 -75
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +187 -176
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +326 -91
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +103 -47
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +54 -19
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/{authorization/AccessAdmin.sol/IAccessManagedChecker.json → registry/IRelease.sol/IRelease.json} +6 -6
- 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 +92 -57
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +727 -479
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +75 -39
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +79 -43
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +386 -64
- 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 +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +60 -50
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -531
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +111 -95
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +178 -34
- 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 +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 +41 -31
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +155 -382
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +41 -45
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +6 -6
- 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 +139 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +56 -3
- 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 +60 -64
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +6 -6
- 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 +137 -62
- 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 +51 -11
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
- 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 +1026 -101
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1218 -214
- 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/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -61
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +174 -217
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +253 -174
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +87 -55
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +957 -603
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +101 -51
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
- 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 +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 +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 +30 -6
- 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 +61 -37
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +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 +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +422 -258
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +142 -262
- package/contracts/authorization/IAccess.sol +25 -7
- package/contracts/authorization/IAccessAdmin.sol +87 -80
- 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 +16 -14
- package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
- package/contracts/distribution/Distribution.sol +38 -75
- package/contracts/distribution/DistributionService.sol +181 -87
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +34 -19
- package/contracts/examples/fire/FirePool.sol +6 -6
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +15 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +34 -11
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +7 -13
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +119 -27
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +4 -4
- package/contracts/instance/IInstance.sol +92 -19
- package/contracts/instance/IInstanceService.sol +52 -9
- package/contracts/instance/Instance.sol +163 -57
- package/contracts/instance/InstanceAdmin.sol +271 -166
- package/contracts/instance/InstanceAuthorizationV3.sol +89 -40
- package/contracts/instance/InstanceReader.sol +422 -369
- package/contracts/instance/InstanceService.sol +252 -176
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +21 -14
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +6 -8
- 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 +19 -7
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +4 -0
- package/contracts/oracle/BasicOracle.sol +2 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +3 -5
- package/contracts/oracle/OracleService.sol +24 -23
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +3 -16
- package/contracts/pool/BasicPoolAuthorization.sol +29 -16
- package/contracts/pool/BundleService.sol +67 -104
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +27 -33
- package/contracts/pool/IPoolService.sol +57 -40
- package/contracts/pool/Pool.sol +13 -25
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +203 -201
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +86 -18
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +3 -3
- package/contracts/product/BasicProductAuthorization.sol +32 -11
- package/contracts/product/ClaimService.sol +187 -171
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +24 -2
- package/contracts/product/IClaimService.sol +18 -5
- package/contracts/product/IPolicyService.sol +20 -8
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +110 -198
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +52 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +93 -27
- package/contracts/product/RiskService.sol +119 -36
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +23 -24
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/Registry.sol +22 -11
- package/contracts/registry/RegistryAdmin.sol +100 -363
- package/contracts/registry/RegistryAuthorization.sol +309 -0
- package/contracts/registry/RegistryService.sol +4 -4
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +157 -117
- package/contracts/registry/ServiceAuthorizationV3.sol +194 -27
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +34 -37
- package/contracts/shared/ComponentService.sol +314 -433
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ContractLib.sol +164 -76
- package/contracts/shared/IComponent.sol +1 -10
- package/contracts/shared/IComponentService.sol +22 -41
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IKeyValueStore.sol +1 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +15 -5
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +7 -18
- package/contracts/shared/KeyValueStore.sol +3 -3
- package/contracts/shared/NftOwnable.sol +8 -6
- package/contracts/shared/PolicyHolder.sol +4 -3
- package/contracts/shared/Registerable.sol +42 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +45 -92
- package/contracts/staking/IStaking.sol +155 -64
- package/contracts/staking/IStakingService.sol +45 -75
- package/contracts/staking/Staking.sol +444 -203
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +1 -2
- package/contracts/staking/StakingReader.sol +41 -80
- package/contracts/staking/StakingService.sol +62 -181
- package/contracts/staking/StakingServiceManager.sol +6 -4
- package/contracts/staking/StakingStore.sol +697 -329
- package/contracts/staking/TargetManagerLib.sol +1 -1
- 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 +67 -38
- package/contracts/type/RiskId.sol +9 -3
- package/contracts/type/RoleId.sol +63 -45
- package/contracts/type/Seconds.sol +14 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -7
- package/contracts/type/UFixed.sol +35 -127
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- 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/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- 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 -474
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
@@ -5,17 +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 {IAccess} from "./IAccess.sol";
|
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";
|
8
15
|
import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
|
9
16
|
import {ContractLib} from "../shared/ContractLib.sol";
|
10
|
-
import {
|
17
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
18
|
+
import {ObjectType} from "../type/ObjectType.sol";
|
11
19
|
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
12
|
-
import {Selector,
|
20
|
+
import {Selector, SelectorSetLib} from "../type/Selector.sol";
|
13
21
|
import {Str, StrLib} from "../type/String.sol";
|
14
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"; }
|
15
27
|
|
16
|
-
interface IAccessManagedChecker {
|
17
|
-
function authority() external view returns (address);
|
18
|
-
}
|
19
28
|
|
20
29
|
/**
|
21
30
|
* @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
|
@@ -29,16 +38,23 @@ contract AccessAdmin is
|
|
29
38
|
{
|
30
39
|
using EnumerableSet for EnumerableSet.AddressSet;
|
31
40
|
|
32
|
-
|
33
|
-
string
|
41
|
+
/// @dev admin name used for logging only
|
42
|
+
string internal _adminName;
|
34
43
|
|
35
|
-
/// @dev the
|
44
|
+
/// @dev the access manager driving the access admin contract
|
45
|
+
/// hold link to registry and release version
|
36
46
|
AccessManagerCloneable internal _authority;
|
37
47
|
|
48
|
+
/// @dev the authorization contract used for initial access control
|
49
|
+
IAuthorization internal _authorization;
|
50
|
+
|
38
51
|
/// @dev stores the deployer address and allows to create initializers
|
39
52
|
/// that are restricted to the deployer address.
|
40
53
|
address internal _deployer;
|
41
54
|
|
55
|
+
/// @dev the linked NFT ID
|
56
|
+
NftId internal _linkedNftId;
|
57
|
+
|
42
58
|
/// @dev store role info per role id
|
43
59
|
mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
|
44
60
|
|
@@ -69,52 +85,109 @@ contract AccessAdmin is
|
|
69
85
|
/// @dev temporary dynamic functions array
|
70
86
|
bytes4[] private _functions;
|
71
87
|
|
88
|
+
// @dev target type specific role id counters
|
89
|
+
mapping(TargetType => uint64) internal _nextRoleId;
|
90
|
+
|
72
91
|
modifier onlyDeployer() {
|
73
92
|
// special case for cloned AccessAdmin contracts
|
74
|
-
// IMPORTANT cloning and
|
93
|
+
// IMPORTANT cloning and initialize authority needs to be done in a single transaction
|
75
94
|
if (_deployer == address(0)) {
|
76
95
|
_deployer = msg.sender;
|
77
96
|
}
|
78
97
|
|
79
98
|
if (msg.sender != _deployer) {
|
80
|
-
revert
|
99
|
+
revert ErrorAccessAdminNotDeployer();
|
81
100
|
}
|
82
101
|
_;
|
83
102
|
}
|
84
103
|
|
85
|
-
modifier onlyRoleAdmin(RoleId roleId) {
|
86
|
-
_checkRoleExists(roleId, false);
|
87
104
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
105
|
+
//-------------- initialization functions ------------------------------//
|
106
|
+
|
107
|
+
/// @dev Initializes this admin with the provided accessManager (and authorization specification).
|
108
|
+
/// Internally initializes access manager with this admin and creates basic role setup.
|
109
|
+
function initialize(
|
110
|
+
address authority,
|
111
|
+
string memory adminName
|
112
|
+
)
|
113
|
+
public
|
114
|
+
initializer()
|
115
|
+
{
|
116
|
+
__AccessAdmin_init(authority, adminName);
|
92
117
|
}
|
93
118
|
|
94
|
-
|
95
|
-
|
96
|
-
|
119
|
+
|
120
|
+
function __AccessAdmin_init(
|
121
|
+
address authority,
|
122
|
+
string memory adminName
|
123
|
+
)
|
124
|
+
internal
|
125
|
+
onlyInitializing()
|
126
|
+
onlyDeployer()
|
127
|
+
{
|
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();
|
97
137
|
}
|
98
|
-
|
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
|
+
}
|
146
|
+
|
147
|
+
// effects
|
148
|
+
// set and initialize this access manager contract as
|
149
|
+
// the admin (ADMIN_ROLE) of the provided authority
|
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();
|
157
|
+
|
158
|
+
// create admin and public roles
|
159
|
+
_initializeAdminAndPublicRoles();
|
99
160
|
}
|
100
161
|
|
101
|
-
|
102
|
-
|
103
|
-
|
162
|
+
//--- view functions for access amdin ---------------------------------------//
|
163
|
+
|
164
|
+
function getRelease() public view virtual returns (VersionPart release) {
|
165
|
+
return _authority.getRelease();
|
104
166
|
}
|
105
167
|
|
106
|
-
|
107
|
-
|
108
|
-
|
168
|
+
|
169
|
+
function getRegistry() public view returns (IRegistry registry) {
|
170
|
+
return _authority.getRegistry();
|
171
|
+
}
|
172
|
+
|
173
|
+
|
174
|
+
function getLinkedNftId() external view returns (NftId linkedNftId) {
|
175
|
+
return _linkedNftId;
|
109
176
|
}
|
110
177
|
|
111
|
-
constructor() {
|
112
|
-
_deployer = msg.sender;
|
113
|
-
_authority = new AccessManagerCloneable();
|
114
|
-
_authority.initialize(address(this));
|
115
178
|
|
116
|
-
|
117
|
-
|
179
|
+
function getLinkedOwner() external view returns (address linkedOwner) {
|
180
|
+
return getRegistry().ownerOf(_linkedNftId);
|
181
|
+
}
|
182
|
+
|
183
|
+
|
184
|
+
function getAuthorization() public view returns (IAuthorization authorization) {
|
185
|
+
return _authorization;
|
186
|
+
}
|
187
|
+
|
188
|
+
|
189
|
+
function isLocked() public view returns (bool locked) {
|
190
|
+
return _authority.isLocked();
|
118
191
|
}
|
119
192
|
|
120
193
|
//--- view functions for roles ------------------------------------------//
|
@@ -135,16 +208,33 @@ contract AccessAdmin is
|
|
135
208
|
return RoleId.wrap(_authority.PUBLIC_ROLE());
|
136
209
|
}
|
137
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
|
+
|
138
220
|
function roleExists(RoleId roleId) public view returns (bool exists) {
|
139
221
|
return _roleInfo[roleId].createdAt.gtz();
|
140
222
|
}
|
141
223
|
|
142
|
-
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) {
|
143
229
|
return _roleInfo[roleId];
|
144
230
|
}
|
145
231
|
|
146
|
-
function
|
147
|
-
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;
|
148
238
|
}
|
149
239
|
|
150
240
|
function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
|
@@ -155,20 +245,15 @@ contract AccessAdmin is
|
|
155
245
|
return _roleMembers[roleId].at(idx);
|
156
246
|
}
|
157
247
|
|
158
|
-
function
|
248
|
+
function isRoleMember(RoleId roleId, address account) public view returns (bool) {
|
159
249
|
(bool isMember, ) = _authority.hasRole(
|
160
250
|
RoleId.unwrap(roleId),
|
161
251
|
account);
|
162
252
|
return isMember;
|
163
253
|
}
|
164
254
|
|
165
|
-
function
|
166
|
-
|
167
|
-
virtual
|
168
|
-
view
|
169
|
-
returns (bool)
|
170
|
-
{
|
171
|
-
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);
|
172
257
|
}
|
173
258
|
|
174
259
|
//--- view functions for targets ----------------------------------------//
|
@@ -185,7 +270,7 @@ contract AccessAdmin is
|
|
185
270
|
return _targets[idx];
|
186
271
|
}
|
187
272
|
|
188
|
-
function getTargetInfo(address target)
|
273
|
+
function getTargetInfo(address target) public view returns (TargetInfo memory targetInfo) {
|
189
274
|
return _targetInfo[target];
|
190
275
|
}
|
191
276
|
|
@@ -194,7 +279,7 @@ contract AccessAdmin is
|
|
194
279
|
}
|
195
280
|
|
196
281
|
function isTargetLocked(address target) public view returns (bool locked) {
|
197
|
-
return _authority.isTargetClosed(target);
|
282
|
+
return _authority.isLocked() || _authority.isTargetClosed(target);
|
198
283
|
}
|
199
284
|
|
200
285
|
function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
|
@@ -220,146 +305,110 @@ contract AccessAdmin is
|
|
220
305
|
selector.toBytes4()));
|
221
306
|
}
|
222
307
|
|
223
|
-
function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
|
224
|
-
(can, ) = _authority.canCall(caller, target, selector.toBytes4());
|
225
|
-
}
|
226
|
-
|
227
|
-
function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
|
228
|
-
return RoleInfo({
|
229
|
-
name: StrLib.toStr(name),
|
230
|
-
adminRoleId: adminRoleId,
|
231
|
-
roleType: roleType,
|
232
|
-
maxMemberCount: maxMemberCount,
|
233
|
-
createdAt: TimestampLib.blockTimestamp(),
|
234
|
-
pausedAt: TimestampLib.max()
|
235
|
-
});
|
236
|
-
}
|
237
|
-
|
238
|
-
function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
|
239
|
-
return FunctionInfo({
|
240
|
-
name: StrLib.toStr(name),
|
241
|
-
selector: SelectorLib.toSelector(selector),
|
242
|
-
createdAt: TimestampLib.blockTimestamp()});
|
243
|
-
}
|
244
|
-
|
245
308
|
function deployer() public view returns (address) {
|
246
309
|
return _deployer;
|
247
310
|
}
|
248
311
|
|
249
312
|
//--- internal/private functions -------------------------------------------------//
|
250
313
|
|
251
|
-
function
|
252
|
-
|
253
|
-
|
254
|
-
FunctionInfo[] memory functions
|
255
|
-
)
|
256
|
-
internal
|
257
|
-
{
|
258
|
-
if (roleId == getAdminRole()) {
|
259
|
-
revert ErrorAuthorizeForAdminRoleInvalid(target);
|
314
|
+
function _linkToNftOwnable(address registerable) internal {
|
315
|
+
if (!getRegistry().isRegistered(registerable)) {
|
316
|
+
revert ErrorAccessAdminNotRegistered(registerable);
|
260
317
|
}
|
261
318
|
|
262
|
-
|
263
|
-
bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
|
264
|
-
|
265
|
-
// apply authz via access manager
|
266
|
-
_grantRoleAccessToFunctions(target, roleId, functionSelectors);
|
319
|
+
_linkedNftId = getRegistry().getNftIdForAddress(registerable);
|
267
320
|
}
|
268
321
|
|
269
|
-
function _unauthorizeTargetFunctions(
|
270
|
-
address target,
|
271
|
-
FunctionInfo[] memory functions
|
272
|
-
)
|
273
|
-
internal
|
274
|
-
{
|
275
|
-
bool addFunctions = false;
|
276
|
-
bytes4[] memory functionSelectors = _processFunctionSelectors(target, functions, addFunctions);
|
277
|
-
_grantRoleAccessToFunctions(target, getAdminRole(), functionSelectors);
|
278
|
-
}
|
279
322
|
|
280
|
-
function
|
281
|
-
address target,
|
282
|
-
FunctionInfo[] memory functions,
|
283
|
-
bool addFunctions
|
284
|
-
)
|
323
|
+
function _initializeAdminAndPublicRoles()
|
285
324
|
internal
|
286
|
-
|
287
|
-
|
288
|
-
)
|
325
|
+
virtual
|
326
|
+
onlyInitializing()
|
289
327
|
{
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
// add function selector to target selector set if not in set
|
300
|
-
if (addFunctions) { SelectorSetLib.add(_targetFunctions[target], selector); }
|
301
|
-
else { SelectorSetLib.remove(_targetFunctions[target], selector); }
|
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()}));
|
302
336
|
|
303
|
-
|
304
|
-
|
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));
|
305
342
|
|
306
|
-
|
307
|
-
|
308
|
-
|
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()}));
|
309
351
|
}
|
310
352
|
|
311
|
-
|
312
|
-
|
313
|
-
)
|
353
|
+
|
354
|
+
/// @dev Authorize the functions of the target for the specified role.
|
355
|
+
function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
|
314
356
|
internal
|
315
|
-
virtual
|
316
|
-
onlyInitializing()
|
317
|
-
onlyDeployer()
|
318
357
|
{
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
358
|
+
_authorizeTargetFunctions(
|
359
|
+
getTargetForName(target),
|
360
|
+
_toAuthorizedRoleId(authorization, roleId),
|
361
|
+
authorization.getAuthorizedFunctions(
|
362
|
+
target,
|
363
|
+
roleId),
|
364
|
+
true);
|
325
365
|
}
|
326
366
|
|
327
367
|
|
328
|
-
function
|
368
|
+
function _toAuthorizedRoleId(IAuthorization authorization, RoleId roleId)
|
329
369
|
internal
|
330
|
-
|
331
|
-
onlyInitializing()
|
370
|
+
returns (RoleId authorizedRoleId)
|
332
371
|
{
|
333
|
-
|
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
|
+
}
|
385
|
+
|
386
|
+
return roleId;
|
387
|
+
}
|
388
|
+
|
389
|
+
string memory roleName = authorization.getRoleInfo(roleId).name.toString();
|
390
|
+
return authorizedRoleId = getRoleForName(roleName);
|
334
391
|
}
|
335
392
|
|
336
393
|
|
337
|
-
|
338
|
-
|
394
|
+
function _authorizeTargetFunctions(
|
395
|
+
address target,
|
396
|
+
RoleId roleId,
|
397
|
+
FunctionInfo[] memory functions,
|
398
|
+
bool addFunctions
|
399
|
+
)
|
339
400
|
internal
|
340
401
|
{
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
_createRoleUnchecked(
|
345
|
-
ADMIN_ROLE(),
|
346
|
-
toRole({
|
347
|
-
adminRoleId: ADMIN_ROLE(),
|
348
|
-
roleType: RoleType.Contract,
|
349
|
-
maxMemberCount: 1,
|
350
|
-
name: ADMIN_ROLE_NAME}));
|
351
|
-
|
352
|
-
// add this contract as admin role member
|
353
|
-
_roleMembers[adminRoleId].add(address(this));
|
402
|
+
if (addFunctions && roleId == getAdminRole()) {
|
403
|
+
revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
|
404
|
+
}
|
354
405
|
|
355
|
-
//
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
maxMemberCount: type(uint32).max,
|
362
|
-
name: PUBLIC_ROLE_NAME}));
|
406
|
+
// apply authz via access manager
|
407
|
+
_grantRoleAccessToFunctions(
|
408
|
+
target,
|
409
|
+
roleId,
|
410
|
+
functions,
|
411
|
+
addFunctions); // add functions
|
363
412
|
}
|
364
413
|
|
365
414
|
|
@@ -367,27 +416,66 @@ contract AccessAdmin is
|
|
367
416
|
function _grantRoleAccessToFunctions(
|
368
417
|
address target,
|
369
418
|
RoleId roleId,
|
370
|
-
|
419
|
+
FunctionInfo[] memory functions,
|
420
|
+
bool addFunctions
|
371
421
|
)
|
372
422
|
internal
|
373
423
|
{
|
424
|
+
_checkTargetExists(target);
|
425
|
+
_checkRoleExists(roleId, true, true);
|
426
|
+
|
374
427
|
_authority.setTargetFunctionRole(
|
375
428
|
target,
|
376
|
-
|
429
|
+
AccessAdminLib.getSelectors(functions),
|
377
430
|
RoleId.unwrap(roleId));
|
378
431
|
|
379
|
-
//
|
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);
|
439
|
+
}
|
440
|
+
}
|
441
|
+
|
442
|
+
|
443
|
+
function _updateFunctionAccess(
|
444
|
+
address target,
|
445
|
+
RoleId roleId,
|
446
|
+
FunctionInfo memory func,
|
447
|
+
bool addFunction
|
448
|
+
)
|
449
|
+
internal
|
450
|
+
{
|
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); }
|
458
|
+
|
459
|
+
// logging
|
460
|
+
emit LogAccessAdminFunctionGranted(
|
461
|
+
_adminName,
|
462
|
+
target,
|
463
|
+
string(abi.encodePacked(
|
464
|
+
func.name.toString(),
|
465
|
+
"(): ",
|
466
|
+
_getRoleName(roleId))));
|
380
467
|
}
|
381
468
|
|
382
469
|
|
383
470
|
/// @dev grant the specified role to the provided account
|
384
471
|
function _grantRoleToAccount(RoleId roleId, address account)
|
385
472
|
internal
|
386
|
-
onlyExistingRole(roleId, true)
|
387
473
|
{
|
474
|
+
_checkRoleExists(roleId, true, false);
|
475
|
+
|
388
476
|
// check max role members will not be exceeded
|
389
477
|
if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
|
390
|
-
revert
|
478
|
+
revert ErrorAccessAdminRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
|
391
479
|
}
|
392
480
|
|
393
481
|
// check account is contract for contract role
|
@@ -395,37 +483,38 @@ contract AccessAdmin is
|
|
395
483
|
_roleInfo[roleId].roleType == RoleType.Contract &&
|
396
484
|
!ContractLib.isContract(account) // will fail in account's constructor
|
397
485
|
) {
|
398
|
-
revert
|
486
|
+
revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
|
399
487
|
}
|
400
488
|
|
401
|
-
//
|
489
|
+
// effects
|
402
490
|
_roleMembers[roleId].add(account);
|
403
491
|
_authority.grantRole(
|
404
492
|
RoleId.unwrap(roleId),
|
405
493
|
account,
|
406
494
|
0);
|
407
495
|
|
408
|
-
|
496
|
+
emit LogAccessAdminRoleGranted(_adminName, account, _getRoleName(roleId));
|
409
497
|
}
|
410
498
|
|
499
|
+
|
411
500
|
/// @dev revoke the specified role from the provided account
|
412
501
|
function _revokeRoleFromAccount(RoleId roleId, address account)
|
413
502
|
internal
|
414
|
-
onlyExistingRole(roleId, false)
|
415
503
|
{
|
504
|
+
_checkRoleExists(roleId, false, false);
|
416
505
|
|
417
|
-
// check
|
506
|
+
// check for attempt to revoke contract role
|
418
507
|
if (_roleInfo[roleId].roleType == RoleType.Contract) {
|
419
|
-
revert
|
508
|
+
revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
|
420
509
|
}
|
421
510
|
|
422
|
-
//
|
511
|
+
// effects
|
423
512
|
_roleMembers[roleId].remove(account);
|
424
513
|
_authority.revokeRole(
|
425
514
|
RoleId.unwrap(roleId),
|
426
515
|
account);
|
427
516
|
|
428
|
-
|
517
|
+
emit LogAccessAdminRoleRevoked(_adminName, account, _roleInfo[roleId].name.toString());
|
429
518
|
}
|
430
519
|
|
431
520
|
|
@@ -437,32 +526,84 @@ contract AccessAdmin is
|
|
437
526
|
)
|
438
527
|
internal
|
439
528
|
{
|
440
|
-
//
|
441
|
-
if(
|
442
|
-
|
443
|
-
roleId,
|
444
|
-
_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;
|
445
532
|
}
|
533
|
+
|
534
|
+
AccessAdminLib.checkRoleCreation(this, roleId, info);
|
535
|
+
_createRoleUnchecked(roleId, info);
|
536
|
+
}
|
446
537
|
|
447
|
-
// check admin role exists
|
448
|
-
if(!roleExists(info.adminRoleId)) {
|
449
|
-
revert ErrorRoleAdminNotExisting(info.adminRoleId);
|
450
|
-
}
|
451
538
|
|
452
|
-
|
453
|
-
|
454
|
-
|
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();
|
455
548
|
}
|
549
|
+
}
|
456
550
|
|
457
|
-
// check role name is not used for another role
|
458
|
-
if(_roleForName[info.name].exists) {
|
459
|
-
revert ErrorRoleNameAlreadyExists(
|
460
|
-
roleId,
|
461
|
-
info.name.toString(),
|
462
|
-
_roleForName[info.name].roleId);
|
463
|
-
}
|
464
551
|
|
465
|
-
|
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
|
+
}
|
466
607
|
}
|
467
608
|
|
468
609
|
|
@@ -473,7 +614,8 @@ contract AccessAdmin is
|
|
473
614
|
private
|
474
615
|
{
|
475
616
|
// create role info
|
476
|
-
info.createdAt = TimestampLib.
|
617
|
+
info.createdAt = TimestampLib.current();
|
618
|
+
info.pausedAt = TimestampLib.max();
|
477
619
|
_roleInfo[roleId] = info;
|
478
620
|
|
479
621
|
// create role name info
|
@@ -484,133 +626,155 @@ contract AccessAdmin is
|
|
484
626
|
// add role to list of roles
|
485
627
|
_roleIds.push(roleId);
|
486
628
|
|
487
|
-
emit
|
629
|
+
emit LogAccessAdminRoleCreated(_adminName, roleId, info.roleType, info.adminRoleId, info.name.toString());
|
488
630
|
}
|
489
631
|
|
490
632
|
|
491
|
-
|
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(
|
492
636
|
address target,
|
493
637
|
string memory targetName,
|
494
|
-
|
495
|
-
bool
|
638
|
+
TargetType targetType,
|
639
|
+
bool managed
|
496
640
|
)
|
497
641
|
internal
|
498
|
-
|
642
|
+
returns (RoleId targetRoleId)
|
499
643
|
{
|
500
|
-
//
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
Str name = StrLib.toStr(targetName);
|
509
|
-
if(name.length() == 0) {
|
510
|
-
revert ErrorTargetNameEmpty(target);
|
511
|
-
}
|
512
|
-
|
513
|
-
// check target name is not used for another target
|
514
|
-
if( _targetForName[name] != address(0)) {
|
515
|
-
revert ErrorTargetNameAlreadyExists(
|
516
|
-
target,
|
517
|
-
targetName,
|
518
|
-
_targetForName[name]);
|
519
|
-
}
|
520
|
-
|
521
|
-
// check target is an access managed contract
|
522
|
-
if (!_isAccessManaged(target)) {
|
523
|
-
revert ErrorTargetNotAccessManaged(target);
|
524
|
-
}
|
525
|
-
|
526
|
-
// check target shares authority with this contract
|
527
|
-
if (checkAuthority) {
|
528
|
-
address targetAuthority = AccessManagedUpgradeable(target).authority();
|
529
|
-
if (targetAuthority != authority()) {
|
530
|
-
revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
|
531
|
-
}
|
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));
|
532
652
|
}
|
533
653
|
|
534
654
|
// create target info
|
655
|
+
Str name = StrLib.toStr(targetName);
|
535
656
|
_targetInfo[target] = TargetInfo({
|
536
657
|
name: name,
|
537
|
-
|
538
|
-
|
658
|
+
targetType: targetType,
|
659
|
+
roleId: targetRoleId,
|
660
|
+
createdAt: TimestampLib.current()
|
539
661
|
});
|
540
662
|
|
541
663
|
// create name to target mapping
|
542
664
|
_targetForName[name] = target;
|
543
665
|
|
544
|
-
// add
|
666
|
+
// add target to list of targets
|
545
667
|
_targets.push(target);
|
546
668
|
|
547
|
-
|
669
|
+
// grant contract role to target
|
670
|
+
_grantRoleToAccount(targetRoleId, target);
|
671
|
+
|
672
|
+
emit LogAccessAdminTargetCreated(_adminName, targetName, managed, target, targetRoleId);
|
548
673
|
}
|
549
674
|
|
550
675
|
|
551
|
-
function
|
676
|
+
function _getOrCreateTargetRoleIdAndName(
|
677
|
+
address target,
|
678
|
+
string memory targetName,
|
679
|
+
TargetType targetType
|
680
|
+
)
|
552
681
|
internal
|
553
|
-
|
554
|
-
|
682
|
+
returns (
|
683
|
+
RoleId roleId,
|
684
|
+
string memory roleName
|
685
|
+
)
|
555
686
|
{
|
556
|
-
|
557
|
-
|
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]++;
|
558
695
|
}
|
559
696
|
|
560
|
-
|
561
|
-
|
562
|
-
IAccessManagedChecker.authority.selector));
|
563
|
-
|
564
|
-
return success;
|
697
|
+
// create role name
|
698
|
+
roleName = AccessAdminLib.toRoleName(targetName);
|
565
699
|
}
|
566
700
|
|
567
701
|
|
568
|
-
function
|
702
|
+
function _setTargetLocked(address target, bool locked)
|
569
703
|
internal
|
570
704
|
{
|
571
|
-
|
705
|
+
_checkTargetExists(target);
|
706
|
+
_authority.setTargetClosed(target, locked);
|
707
|
+
}
|
708
|
+
|
572
709
|
|
573
|
-
|
574
|
-
if(
|
575
|
-
|
710
|
+
function _getRoleName(RoleId roleId) internal view returns (string memory) {
|
711
|
+
if (roleExists(roleId)) {
|
712
|
+
return _roleInfo[roleId].name.toString();
|
576
713
|
}
|
714
|
+
return "<unknown-role>";
|
715
|
+
}
|
577
716
|
|
578
|
-
|
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);
|
579
735
|
}
|
580
736
|
|
581
737
|
|
582
|
-
function _checkRoleExists(
|
738
|
+
function _checkRoleExists(
|
583
739
|
RoleId roleId,
|
584
|
-
bool onlyActiveRole
|
740
|
+
bool onlyActiveRole,
|
741
|
+
bool allowAdminAndPublicRoles
|
585
742
|
)
|
586
743
|
internal
|
587
744
|
view
|
588
745
|
{
|
589
746
|
if (!roleExists(roleId)) {
|
590
|
-
revert
|
747
|
+
revert ErrorAccessAdminRoleUnknown(roleId);
|
591
748
|
}
|
592
749
|
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
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
|
+
}
|
598
759
|
}
|
599
760
|
|
600
761
|
// check if role is disabled
|
601
|
-
if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.
|
602
|
-
revert
|
762
|
+
if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.current()) {
|
763
|
+
revert ErrorAccessAdminRoleIsPaused(roleId);
|
603
764
|
}
|
604
765
|
}
|
605
766
|
|
606
767
|
|
607
768
|
/// @dev check if target exists and reverts if it doesn't
|
608
|
-
function
|
769
|
+
function _checkTargetExists(
|
770
|
+
address target
|
771
|
+
)
|
609
772
|
internal
|
610
773
|
view
|
611
774
|
{
|
775
|
+
// check not yet created
|
612
776
|
if (!targetExists(target)) {
|
613
|
-
revert
|
777
|
+
revert ErrorAccessAdminTargetNotCreated(target);
|
614
778
|
}
|
615
779
|
}
|
616
780
|
}
|