@etherisc/gif-next 0.0.2-f1fe735-758 → 0.0.2-f2273b3-211
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 +59 -9
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -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 +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1379 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +542 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +211 -270
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +589 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +144 -544
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +396 -265
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +201 -261
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +244 -63
- 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 +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -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 +1479 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +161 -73
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +116 -126
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +190 -211
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1462 -241
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1044 -316
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +135 -330
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +97 -111
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +650 -529
- 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 +48 -7
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +141 -126
- 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 +127 -398
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +331 -204
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +206 -29
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +132 -379
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +124 -662
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +653 -532
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -237
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +258 -536
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
- 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 +359 -55
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
- 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 +585 -112
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +449 -422
- 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 +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +48 -7
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +82 -16
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +5 -5
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +576 -516
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -113
- 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 +541 -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 +89 -88
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +547 -224
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +127 -123
- 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 +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +112 -351
- 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 +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- 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 +585 -12
- 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 +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +137 -139
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +216 -375
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +48 -7
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +126 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -63
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +183 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +103 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +181 -135
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- 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 +55 -2
- 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 +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +181 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
- 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 +66 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/{shared → authorization}/AccessAdmin.sol +310 -380
- package/contracts/authorization/AccessManagerCloneable.sol +149 -0
- package/contracts/authorization/Authorization.sol +337 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +37 -62
- package/contracts/authorization/IAuthorization.sol +74 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -6
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +41 -25
- package/contracts/distribution/BasicDistribution.sol +141 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
- package/contracts/distribution/Distribution.sol +153 -125
- package/contracts/distribution/DistributionService.sol +172 -111
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +26 -40
- package/contracts/distribution/IDistributionService.sol +42 -22
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +438 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IInstance.sol +27 -44
- package/contracts/instance/IInstanceService.sol +16 -41
- package/contracts/instance/Instance.sol +103 -119
- package/contracts/instance/InstanceAdmin.sol +346 -240
- package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
- package/contracts/instance/InstanceReader.sol +293 -48
- package/contracts/instance/InstanceService.sol +145 -180
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +29 -3
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +77 -0
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +14 -15
- package/contracts/instance/module/IDistribution.sol +2 -2
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +64 -53
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +76 -0
- package/contracts/pool/BundleService.sol +204 -105
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +31 -22
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +90 -75
- package/contracts/pool/Pool.sol +209 -163
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +546 -241
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +83 -78
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +51 -0
- package/contracts/product/BasicProductAuthorization.sol +56 -0
- package/contracts/product/ClaimService.sol +365 -175
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +53 -36
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +29 -9
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +476 -269
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +66 -62
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +233 -132
- package/contracts/product/RiskService.sol +145 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +74 -32
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +368 -220
- package/contracts/registry/RegistryAdmin.sol +238 -219
- package/contracts/registry/RegistryService.sol +41 -66
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +511 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +107 -60
- package/contracts/registry/TokenRegistry.sol +8 -10
- package/contracts/shared/Component.sol +74 -128
- package/contracts/shared/ComponentService.sol +456 -384
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +29 -18
- package/contracts/shared/ContractLib.sol +253 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +49 -39
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
- 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 +4 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +96 -43
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +55 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +18 -36
- package/contracts/shared/TokenHandler.sol +309 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +9 -13
- package/contracts/staking/IStakingService.sol +24 -9
- package/contracts/staking/StakeManagerLib.sol +85 -43
- package/contracts/staking/Staking.sol +96 -79
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +21 -33
- package/contracts/staking/StakingService.sol +79 -37
- package/contracts/staking/StakingServiceManager.sol +8 -7
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- 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 +89 -27
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +35 -4
- package/contracts/type/RoleId.sol +75 -94
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +40 -121
- package/contracts/type/Version.sol +18 -6
- package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +6 -5
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- 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/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1177
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/instance/base/ObjectManager.sol +0 -80
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -503
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
| @@ -1,16 +1,23 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: UNLICENSED
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
         | 
| 5 4 | 
             
            import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
         | 
| 6 5 | 
             
            import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
         | 
| 6 | 
            +
            import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
         | 
| 7 7 |  | 
| 8 | 
            +
            import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
         | 
| 9 | 
            +
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 8 10 | 
             
            import {IAccessAdmin} from "./IAccessAdmin.sol";
         | 
| 9 | 
            -
            import { | 
| 11 | 
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 12 | 
            +
            import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 10 13 | 
             
            import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
         | 
| 11 14 | 
             
            import {Str, StrLib} from "../type/String.sol";
         | 
| 12 | 
            -
            import { | 
| 15 | 
            +
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 16 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 13 17 |  | 
| 18 | 
            +
            interface IAccessManagedChecker {
         | 
| 19 | 
            +
                function authority() external view returns (address);
         | 
| 20 | 
            +
            }
         | 
| 14 21 |  | 
| 15 22 | 
             
            /**
         | 
| 16 23 | 
             
             * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
         | 
| @@ -19,6 +26,7 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol"; | |
| 19 26 | 
             
             */ 
         | 
| 20 27 | 
             
            contract AccessAdmin is
         | 
| 21 28 | 
             
                AccessManagedUpgradeable,
         | 
| 29 | 
            +
                ReentrancyGuardUpgradeable,
         | 
| 22 30 | 
             
                IAccessAdmin
         | 
| 23 31 | 
             
            {
         | 
| 24 32 | 
             
                using EnumerableSet for EnumerableSet.AddressSet;
         | 
| @@ -26,19 +34,13 @@ contract AccessAdmin is | |
| 26 34 | 
             
                string public constant ADMIN_ROLE_NAME = "AdminRole";
         | 
| 27 35 | 
             
                string public constant PUBLIC_ROLE_NAME = "PublicRole";
         | 
| 28 36 |  | 
| 29 | 
            -
                uint64 public constant MANAGER_ROLE = type(uint64).min + 1;
         | 
| 30 | 
            -
                string public constant MANAGER_ROLE_NAME = "ManagerRole";
         | 
| 31 | 
            -
             | 
| 32 37 | 
             
                /// @dev the OpenZeppelin access manager driving the access admin contract
         | 
| 33 | 
            -
                 | 
| 38 | 
            +
                AccessManagerCloneable internal _authority;
         | 
| 34 39 |  | 
| 35 40 | 
             
                /// @dev stores the deployer address and allows to create initializers
         | 
| 36 41 | 
             
                /// that are restricted to the deployer address.
         | 
| 37 42 | 
             
                address internal _deployer;
         | 
| 38 43 |  | 
| 39 | 
            -
                /// @dev required role for state changes to this contract
         | 
| 40 | 
            -
                RoleId internal _managerRoleId;
         | 
| 41 | 
            -
             | 
| 42 44 | 
             
                /// @dev store role info per role id
         | 
| 43 45 | 
             
                mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
         | 
| 44 46 |  | 
| @@ -63,15 +65,15 @@ contract AccessAdmin is | |
| 63 65 | 
             
                /// @dev store all managed functions per target
         | 
| 64 66 | 
             
                mapping(address target => SelectorSetLib.Set selectors) internal _targetFunctions;
         | 
| 65 67 |  | 
| 66 | 
            -
                /// @dev  | 
| 67 | 
            -
                mapping(address target => mapping(Selector selector =>  | 
| 68 | 
            +
                /// @dev function infos array
         | 
| 69 | 
            +
                mapping(address target => mapping(Selector selector => FunctionInfo)) internal _functionInfo;
         | 
| 68 70 |  | 
| 69 71 | 
             
                /// @dev temporary dynamic functions array
         | 
| 70 72 | 
             
                bytes4[] private _functions;
         | 
| 71 73 |  | 
| 72 74 | 
             
                modifier onlyDeployer() {
         | 
| 73 75 | 
             
                    // special case for cloned AccessAdmin contracts
         | 
| 74 | 
            -
                    // IMPORTANT cloning and  | 
| 76 | 
            +
                    // IMPORTANT cloning and initialize authority needs to be done in a single transaction
         | 
| 75 77 | 
             
                    if (_deployer == address(0)) {
         | 
| 76 78 | 
             
                        _deployer = msg.sender;
         | 
| 77 79 | 
             
                    }
         | 
| @@ -83,11 +85,9 @@ contract AccessAdmin is | |
| 83 85 | 
             
                }
         | 
| 84 86 |  | 
| 85 87 | 
             
                modifier onlyRoleAdmin(RoleId roleId) {
         | 
| 86 | 
            -
                     | 
| 87 | 
            -
                        revert ErrorRoleUnknown(roleId);
         | 
| 88 | 
            -
                    }
         | 
| 88 | 
            +
                    _checkRoleExists(roleId, false);
         | 
| 89 89 |  | 
| 90 | 
            -
                    if (! | 
| 90 | 
            +
                    if (!hasAdminRole(msg.sender, roleId)) {
         | 
| 91 91 | 
             
                        revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
         | 
| 92 92 | 
             
                    }
         | 
| 93 93 | 
             
                    _;
         | 
| @@ -100,8 +100,15 @@ contract AccessAdmin is | |
| 100 100 | 
             
                    _;
         | 
| 101 101 | 
             
                }
         | 
| 102 102 |  | 
| 103 | 
            -
                modifier onlyExistingRole( | 
| 104 | 
            -
                     | 
| 103 | 
            +
                modifier onlyExistingRole(
         | 
| 104 | 
            +
                    RoleId roleId, 
         | 
| 105 | 
            +
                    bool onlyActiveRole,
         | 
| 106 | 
            +
                    bool allowLockedRoles
         | 
| 107 | 
            +
                )
         | 
| 108 | 
            +
                {
         | 
| 109 | 
            +
                    if (!allowLockedRoles) {
         | 
| 110 | 
            +
                        _checkRoleExists(roleId, onlyActiveRole);
         | 
| 111 | 
            +
                    }
         | 
| 105 112 | 
             
                    _;
         | 
| 106 113 | 
             
                }
         | 
| 107 114 |  | 
| @@ -110,159 +117,91 @@ contract AccessAdmin is | |
| 110 117 | 
             
                    _;
         | 
| 111 118 | 
             
                }
         | 
| 112 119 |  | 
| 113 | 
            -
                 | 
| 114 | 
            -
                    _deployer = msg.sender;
         | 
| 115 | 
            -
                    _authority = new AccessManager(address(this));
         | 
| 120 | 
            +
                //-------------- initialization functions ------------------------------//
         | 
| 116 121 |  | 
| 117 | 
            -
             | 
| 118 | 
            -
                    _createInitialRoleSetup();
         | 
| 122 | 
            +
                // event LogAccessAdminDebug(string message);
         | 
| 119 123 |  | 
| 120 | 
            -
             | 
| 121 | 
            -
                 | 
| 122 | 
            -
             | 
| 123 | 
            -
             | 
| 124 | 
            -
             | 
| 125 | 
            -
                function createRole(
         | 
| 126 | 
            -
                    RoleId roleId, 
         | 
| 127 | 
            -
                    RoleId adminRoleId, 
         | 
| 128 | 
            -
                    string memory name,
         | 
| 129 | 
            -
                    uint256 maxMemberCount,
         | 
| 130 | 
            -
                    bool memberRemovalDisabled
         | 
| 124 | 
            +
                /// @dev Initializes this admin with the provided accessManager (and authorization specification).
         | 
| 125 | 
            +
                /// Internally initializes access manager with this admin and creates basic role setup.
         | 
| 126 | 
            +
                function initialize(
         | 
| 127 | 
            +
                    AccessManagerCloneable authority 
         | 
| 131 128 | 
             
                )
         | 
| 132 | 
            -
                     | 
| 133 | 
            -
                     | 
| 134 | 
            -
                    restricted()
         | 
| 129 | 
            +
                    public
         | 
| 130 | 
            +
                    initializer()
         | 
| 135 131 | 
             
                {
         | 
| 136 | 
            -
                     | 
| 132 | 
            +
                    __AccessAdmin_init(authority);
         | 
| 137 133 | 
             
                }
         | 
| 138 134 |  | 
| 139 | 
            -
                function setRoleDisabled(
         | 
| 140 | 
            -
                    RoleId roleId, 
         | 
| 141 | 
            -
                    bool disabled
         | 
| 142 | 
            -
                )
         | 
| 143 | 
            -
                    external
         | 
| 144 | 
            -
                    virtual
         | 
| 145 | 
            -
                    restricted()
         | 
| 146 | 
            -
                {
         | 
| 147 | 
            -
                    _setRoleDisabled(roleId, disabled);
         | 
| 148 | 
            -
                }
         | 
| 149 135 |  | 
| 150 | 
            -
                function  | 
| 151 | 
            -
                     | 
| 152 | 
            -
                    RoleId roleId
         | 
| 136 | 
            +
                function __AccessAdmin_init(
         | 
| 137 | 
            +
                    AccessManagerCloneable authority 
         | 
| 153 138 | 
             
                )
         | 
| 154 | 
            -
                     | 
| 155 | 
            -
                     | 
| 156 | 
            -
                     | 
| 157 | 
            -
                    restricted()
         | 
| 139 | 
            +
                    internal
         | 
| 140 | 
            +
                    onlyInitializing()
         | 
| 141 | 
            +
                    onlyDeployer() // initializes deployer if not initialized yet
         | 
| 158 142 | 
             
                {
         | 
| 159 | 
            -
                     | 
| 160 | 
            -
                }
         | 
| 143 | 
            +
                    authority.initialize(address(this));
         | 
| 161 144 |  | 
| 162 | 
            -
             | 
| 163 | 
            -
                     | 
| 164 | 
            -
                     | 
| 165 | 
            -
             | 
| 166 | 
            -
                    external
         | 
| 167 | 
            -
                    virtual
         | 
| 168 | 
            -
                    onlyRoleAdmin(roleId)
         | 
| 169 | 
            -
                    restricted()
         | 
| 170 | 
            -
                {
         | 
| 171 | 
            -
                    _revokeRoleFromAccount(roleId, account);
         | 
| 172 | 
            -
                }
         | 
| 145 | 
            +
                    // set and initialize this access manager contract as
         | 
| 146 | 
            +
                    // the admin (ADMIN_ROLE) of the provided authority
         | 
| 147 | 
            +
                    __AccessManaged_init(address(authority));
         | 
| 148 | 
            +
                    _authority = authority;
         | 
| 173 149 |  | 
| 174 | 
            -
             | 
| 175 | 
            -
                     | 
| 176 | 
            -
             | 
| 177 | 
            -
                     | 
| 178 | 
            -
                     | 
| 179 | 
            -
                    onlyRoleMember(roleId)
         | 
| 180 | 
            -
                    restricted()
         | 
| 181 | 
            -
                {
         | 
| 182 | 
            -
                    _revokeRoleFromAccount(roleId, msg.sender);
         | 
| 150 | 
            +
                    // create admin and public roles
         | 
| 151 | 
            +
                    _initializeAdminAndPublicRoles();
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                    // additional use case specific initialization
         | 
| 154 | 
            +
                    _initializeCustom();
         | 
| 183 155 | 
             
                }
         | 
| 184 156 |  | 
| 185 | 
            -
                //--- target management functions ---------------------------------------//
         | 
| 186 157 |  | 
| 187 | 
            -
                function  | 
| 188 | 
            -
                     | 
| 189 | 
            -
                    string memory name
         | 
| 190 | 
            -
                )
         | 
| 191 | 
            -
                    external
         | 
| 192 | 
            -
                    virtual
         | 
| 193 | 
            -
                    restricted()
         | 
| 194 | 
            -
                {
         | 
| 195 | 
            -
                    _createTarget(target, name);
         | 
| 158 | 
            +
                function getRegistry() public view returns (IRegistry registry) {
         | 
| 159 | 
            +
                    return _authority.getRegistry();
         | 
| 196 160 | 
             
                }
         | 
| 197 161 |  | 
| 198 | 
            -
                function setTargetLocked(
         | 
| 199 | 
            -
                    address target, 
         | 
| 200 | 
            -
                    bool locked
         | 
| 201 | 
            -
                )
         | 
| 202 | 
            -
                    external
         | 
| 203 | 
            -
                    virtual
         | 
| 204 | 
            -
                    onlyExistingTarget(target)
         | 
| 205 | 
            -
                    restricted()
         | 
| 206 | 
            -
                {
         | 
| 207 | 
            -
                    _authority.setTargetClosed(target, locked);
         | 
| 208 162 |  | 
| 209 | 
            -
             | 
| 163 | 
            +
                function getRelease() public view returns (VersionPart release) {
         | 
| 164 | 
            +
                    return _authority.getRelease();
         | 
| 210 165 | 
             
                }
         | 
| 211 166 |  | 
| 212 | 
            -
                function authorizeFunctions(
         | 
| 213 | 
            -
                    address target, 
         | 
| 214 | 
            -
                    RoleId roleId, 
         | 
| 215 | 
            -
                    Function[] memory functions
         | 
| 216 | 
            -
                )
         | 
| 217 | 
            -
                    external
         | 
| 218 | 
            -
                    virtual
         | 
| 219 | 
            -
                    onlyExistingTarget(target)
         | 
| 220 | 
            -
                    onlyExistingRole(roleId)
         | 
| 221 | 
            -
                    restricted()
         | 
| 222 | 
            -
                {
         | 
| 223 | 
            -
                    _authorizeTargetFunctions(target, roleId, functions);
         | 
| 224 | 
            -
                }
         | 
| 225 167 |  | 
| 226 | 
            -
                function  | 
| 227 | 
            -
                     | 
| 228 | 
            -
                    Function[] memory functions
         | 
| 229 | 
            -
                )
         | 
| 230 | 
            -
                    external
         | 
| 168 | 
            +
                function _initializeAdminAndPublicRoles()
         | 
| 169 | 
            +
                    internal
         | 
| 231 170 | 
             
                    virtual
         | 
| 232 | 
            -
                     | 
| 171 | 
            +
                    onlyInitializing()
         | 
| 233 172 | 
             
                {
         | 
| 234 | 
            -
                     | 
| 235 | 
            -
                }
         | 
| 173 | 
            +
                    RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
         | 
| 236 174 |  | 
| 175 | 
            +
                    // setup admin role
         | 
| 176 | 
            +
                    _createRoleUnchecked(
         | 
| 177 | 
            +
                        ADMIN_ROLE(),
         | 
| 178 | 
            +
                        toRole({
         | 
| 179 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 180 | 
            +
                            roleType: RoleType.Contract,
         | 
| 181 | 
            +
                            maxMemberCount: 1,
         | 
| 182 | 
            +
                            name: ADMIN_ROLE_NAME}));
         | 
| 237 183 |  | 
| 238 | 
            -
             | 
| 239 | 
            -
                     | 
| 240 | 
            -
                }
         | 
| 184 | 
            +
                    // add this contract as admin role member
         | 
| 185 | 
            +
                    _roleMembers[adminRoleId].add(address(this));
         | 
| 241 186 |  | 
| 242 | 
            -
             | 
| 243 | 
            -
                     | 
| 244 | 
            -
             | 
| 245 | 
            -
             | 
| 246 | 
            -
             | 
| 247 | 
            -
             | 
| 248 | 
            -
             | 
| 249 | 
            -
             | 
| 250 | 
            -
             | 
| 251 | 
            -
                    )
         | 
| 252 | 
            -
                {
         | 
| 253 | 
            -
                    Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
         | 
| 187 | 
            +
                    // setup public role
         | 
| 188 | 
            +
                    _createRoleUnchecked(
         | 
| 189 | 
            +
                        PUBLIC_ROLE(),
         | 
| 190 | 
            +
                        toRole({
         | 
| 191 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 192 | 
            +
                            roleType: RoleType.Gif,
         | 
| 193 | 
            +
                            maxMemberCount: type(uint32).max,
         | 
| 194 | 
            +
                            name: PUBLIC_ROLE_NAME}));
         | 
| 195 | 
            +
                }
         | 
| 254 196 |  | 
| 255 | 
            -
                    func = Function({
         | 
| 256 | 
            -
                        selector: selector, 
         | 
| 257 | 
            -
                        name: _functionName[target][selector]});
         | 
| 258 197 |  | 
| 259 | 
            -
             | 
| 260 | 
            -
             | 
| 261 | 
            -
             | 
| 262 | 
            -
             | 
| 263 | 
            -
                }
         | 
| 198 | 
            +
                function _initializeCustom()
         | 
| 199 | 
            +
                    internal
         | 
| 200 | 
            +
                    virtual
         | 
| 201 | 
            +
                    onlyInitializing()
         | 
| 202 | 
            +
                { }
         | 
| 264 203 |  | 
| 265 | 
            -
                //--- view functions  | 
| 204 | 
            +
                //--- view functions for roles ------------------------------------------//
         | 
| 266 205 |  | 
| 267 206 | 
             
                function roles() external view returns (uint256 numberOfRoles) {
         | 
| 268 207 | 
             
                    return _roleIds.length;
         | 
| @@ -280,16 +219,8 @@ contract AccessAdmin is | |
| 280 219 | 
             
                    return RoleId.wrap(_authority.PUBLIC_ROLE());
         | 
| 281 220 | 
             
                }
         | 
| 282 221 |  | 
| 283 | 
            -
                function getManagerRole() public view returns (RoleId roleId) {
         | 
| 284 | 
            -
                    return _managerRoleId;
         | 
| 285 | 
            -
                }
         | 
| 286 | 
            -
             | 
| 287 222 | 
             
                function roleExists(RoleId roleId) public view returns (bool exists) {
         | 
| 288 | 
            -
                    return _roleInfo[roleId]. | 
| 289 | 
            -
                }
         | 
| 290 | 
            -
             | 
| 291 | 
            -
                function isRoleDisabled(RoleId roleId) public view returns (bool isActive) {
         | 
| 292 | 
            -
                    return _roleInfo[roleId].disabledAt <= TimestampLib.blockTimestamp();
         | 
| 223 | 
            +
                    return _roleInfo[roleId].createdAt.gtz();
         | 
| 293 224 | 
             
                }
         | 
| 294 225 |  | 
| 295 226 | 
             
                function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
         | 
| @@ -300,6 +231,15 @@ contract AccessAdmin is | |
| 300 231 | 
             
                    return _roleForName[name];
         | 
| 301 232 | 
             
                }
         | 
| 302 233 |  | 
| 234 | 
            +
                function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
         | 
| 235 | 
            +
                    return _roleMembers[roleId].length();
         | 
| 236 | 
            +
                }
         | 
| 237 | 
            +
             | 
| 238 | 
            +
                function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account) {
         | 
| 239 | 
            +
                    return _roleMembers[roleId].at(idx);
         | 
| 240 | 
            +
                }
         | 
| 241 | 
            +
             | 
| 242 | 
            +
                // TODO false because not role member or because role not exists?
         | 
| 303 243 | 
             
                function hasRole(address account, RoleId roleId) public view returns (bool) {
         | 
| 304 244 | 
             
                    (bool isMember, ) = _authority.hasRole(
         | 
| 305 245 | 
             
                        RoleId.unwrap(roleId), 
         | 
| @@ -307,22 +247,21 @@ contract AccessAdmin is | |
| 307 247 | 
             
                    return isMember;
         | 
| 308 248 | 
             
                }
         | 
| 309 249 |  | 
| 310 | 
            -
                function  | 
| 311 | 
            -
                     | 
| 250 | 
            +
                function hasAdminRole(address account, RoleId roleId)
         | 
| 251 | 
            +
                    public 
         | 
| 252 | 
            +
                    virtual
         | 
| 253 | 
            +
                    view 
         | 
| 254 | 
            +
                    returns (bool)
         | 
| 255 | 
            +
                {
         | 
| 256 | 
            +
                    return hasRole(account, _roleInfo[roleId].adminRoleId);
         | 
| 312 257 | 
             
                }
         | 
| 313 258 |  | 
| 314 | 
            -
                 | 
| 315 | 
            -
                    return _roleMembers[roleId].at(idx);
         | 
| 316 | 
            -
                }
         | 
| 259 | 
            +
                //--- view functions for targets ----------------------------------------//
         | 
| 317 260 |  | 
| 318 261 | 
             
                function targetExists(address target) public view returns (bool exists) {
         | 
| 319 262 | 
             
                    return _targetInfo[target].createdAt.gtz();
         | 
| 320 263 | 
             
                }
         | 
| 321 264 |  | 
| 322 | 
            -
                function isTargetLocked(address target) public view returns (bool locked) {
         | 
| 323 | 
            -
                    return _authority.isTargetClosed(target);
         | 
| 324 | 
            -
                }
         | 
| 325 | 
            -
             | 
| 326 265 | 
             
                function targets() external view returns (uint256 numberOfTargets) {
         | 
| 327 266 | 
             
                    return _targets.length;
         | 
| 328 267 | 
             
                }
         | 
| @@ -335,34 +274,61 @@ contract AccessAdmin is | |
| 335 274 | 
             
                    return _targetInfo[target];
         | 
| 336 275 | 
             
                }
         | 
| 337 276 |  | 
| 338 | 
            -
                function getTargetForName(Str name)  | 
| 277 | 
            +
                function getTargetForName(Str name) public view returns (address target) {
         | 
| 339 278 | 
             
                    return _targetForName[name];
         | 
| 340 279 | 
             
                }
         | 
| 341 280 |  | 
| 342 | 
            -
                function  | 
| 343 | 
            -
                     | 
| 344 | 
            -
             | 
| 345 | 
            -
                    }
         | 
| 281 | 
            +
                function isTargetLocked(address target) public view returns (bool locked) {
         | 
| 282 | 
            +
                    return _authority.isTargetClosed(target);
         | 
| 283 | 
            +
                }
         | 
| 346 284 |  | 
| 347 | 
            -
             | 
| 348 | 
            -
             | 
| 349 | 
            -
             | 
| 285 | 
            +
                function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
         | 
| 286 | 
            +
                    return SelectorSetLib.size(_targetFunctions[target]);
         | 
| 287 | 
            +
                }
         | 
| 350 288 |  | 
| 351 | 
            -
             | 
| 289 | 
            +
                function getAuthorizedFunction(
         | 
| 290 | 
            +
                    address target, 
         | 
| 291 | 
            +
                    uint256 idx
         | 
| 292 | 
            +
                )
         | 
| 293 | 
            +
                    external 
         | 
| 294 | 
            +
                    view 
         | 
| 295 | 
            +
                    returns (
         | 
| 296 | 
            +
                        FunctionInfo memory func, 
         | 
| 297 | 
            +
                        RoleId roleId
         | 
| 298 | 
            +
                    )
         | 
| 299 | 
            +
                {
         | 
| 300 | 
            +
                    Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
         | 
| 301 | 
            +
                    func = _functionInfo[target][selector];
         | 
| 302 | 
            +
                    roleId = RoleIdLib.toRoleId(
         | 
| 303 | 
            +
                        _authority.getTargetFunctionRole(
         | 
| 304 | 
            +
                            target, 
         | 
| 305 | 
            +
                            selector.toBytes4()));
         | 
| 352 306 | 
             
                }
         | 
| 353 307 |  | 
| 354 | 
            -
                function canCall(address caller, address target, Selector selector) external view returns (bool can) {
         | 
| 308 | 
            +
                function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
         | 
| 355 309 | 
             
                    (can, ) = _authority.canCall(caller, target, selector.toBytes4());
         | 
| 356 310 | 
             
                }
         | 
| 357 311 |  | 
| 358 | 
            -
                function  | 
| 359 | 
            -
                    return  | 
| 312 | 
            +
                function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
         | 
| 313 | 
            +
                    return RoleInfo({
         | 
| 314 | 
            +
                        name: StrLib.toStr(name),
         | 
| 315 | 
            +
                        adminRoleId: adminRoleId,
         | 
| 316 | 
            +
                        roleType: roleType,
         | 
| 317 | 
            +
                        maxMemberCount: maxMemberCount,
         | 
| 318 | 
            +
                        createdAt: TimestampLib.blockTimestamp(),
         | 
| 319 | 
            +
                        pausedAt: TimestampLib.max()
         | 
| 320 | 
            +
                    });
         | 
| 321 | 
            +
                }
         | 
| 322 | 
            +
             | 
| 323 | 
            +
                function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
         | 
| 324 | 
            +
                    return FunctionInfo({
         | 
| 325 | 
            +
                        name: StrLib.toStr(name),
         | 
| 326 | 
            +
                        selector: SelectorLib.toSelector(selector),
         | 
| 327 | 
            +
                        createdAt: TimestampLib.blockTimestamp()});
         | 
| 360 328 | 
             
                }
         | 
| 361 329 |  | 
| 362 | 
            -
                function  | 
| 363 | 
            -
             | 
| 364 | 
            -
                            selector: SelectorLib.toSelector(selector),
         | 
| 365 | 
            -
                            name: StrLib.toStr(name)});
         | 
| 330 | 
            +
                function deployer() public view returns (address) {
         | 
| 331 | 
            +
                    return _deployer;
         | 
| 366 332 | 
             
                }
         | 
| 367 333 |  | 
| 368 334 | 
             
                //--- internal/private functions -------------------------------------------------//
         | 
| @@ -370,7 +336,7 @@ contract AccessAdmin is | |
| 370 336 | 
             
                function _authorizeTargetFunctions(
         | 
| 371 337 | 
             
                    address target, 
         | 
| 372 338 | 
             
                    RoleId roleId, 
         | 
| 373 | 
            -
                     | 
| 339 | 
            +
                    FunctionInfo[] memory functions
         | 
| 374 340 | 
             
                )
         | 
| 375 341 | 
             
                    internal
         | 
| 376 342 | 
             
                {
         | 
| @@ -378,37 +344,55 @@ contract AccessAdmin is | |
| 378 344 | 
             
                        revert ErrorAuthorizeForAdminRoleInvalid(target);
         | 
| 379 345 | 
             
                    }
         | 
| 380 346 |  | 
| 381 | 
            -
                     | 
| 382 | 
            -
             | 
| 347 | 
            +
                    (
         | 
| 348 | 
            +
                        bytes4[] memory functionSelectors,
         | 
| 349 | 
            +
                        string[] memory functionNames
         | 
| 350 | 
            +
                    ) = _processFunctionSelectors(target, functions, true);
         | 
| 383 351 |  | 
| 384 352 | 
             
                    // apply authz via access manager
         | 
| 385 | 
            -
                    _grantRoleAccessToFunctions( | 
| 353 | 
            +
                    _grantRoleAccessToFunctions(
         | 
| 354 | 
            +
                        target, 
         | 
| 355 | 
            +
                        roleId, 
         | 
| 356 | 
            +
                        functionSelectors,
         | 
| 357 | 
            +
                        functionNames, 
         | 
| 358 | 
            +
                        false); // allow locked roles
         | 
| 386 359 | 
             
                }
         | 
| 387 360 |  | 
| 388 361 | 
             
                function _unauthorizeTargetFunctions(
         | 
| 389 362 | 
             
                    address target, 
         | 
| 390 | 
            -
                     | 
| 363 | 
            +
                    FunctionInfo[] memory functions
         | 
| 391 364 | 
             
                )
         | 
| 392 365 | 
             
                    internal
         | 
| 393 366 | 
             
                {
         | 
| 394 | 
            -
                     | 
| 395 | 
            -
             | 
| 396 | 
            -
             | 
| 367 | 
            +
                    (
         | 
| 368 | 
            +
                        bytes4[] memory functionSelectors,
         | 
| 369 | 
            +
                        string[] memory functionNames
         | 
| 370 | 
            +
                    ) = _processFunctionSelectors(target, functions, false);
         | 
| 371 | 
            +
             | 
| 372 | 
            +
                    _grantRoleAccessToFunctions(
         | 
| 373 | 
            +
                        target, 
         | 
| 374 | 
            +
                        getAdminRole(), 
         | 
| 375 | 
            +
                        functionSelectors, 
         | 
| 376 | 
            +
                        functionNames, 
         | 
| 377 | 
            +
                        true);  // allowLockedRoles
         | 
| 397 378 | 
             
                }
         | 
| 398 379 |  | 
| 399 380 | 
             
                function _processFunctionSelectors(
         | 
| 400 381 | 
             
                    address target,
         | 
| 401 | 
            -
                     | 
| 382 | 
            +
                    FunctionInfo[] memory functions,
         | 
| 402 383 | 
             
                    bool addFunctions
         | 
| 403 384 | 
             
                )
         | 
| 404 385 | 
             
                    internal
         | 
| 386 | 
            +
                    onlyExistingTarget(target)
         | 
| 405 387 | 
             
                    returns (
         | 
| 406 | 
            -
                        bytes4[] memory functionSelectors
         | 
| 388 | 
            +
                        bytes4[] memory functionSelectors,
         | 
| 389 | 
            +
                        string[] memory functionNames
         | 
| 407 390 | 
             
                    )
         | 
| 408 391 | 
             
                {
         | 
| 409 392 | 
             
                    uint256 n = functions.length;
         | 
| 410 393 | 
             
                    functionSelectors = new bytes4[](n);
         | 
| 411 | 
            -
                     | 
| 394 | 
            +
                    functionNames = new string[](n);
         | 
| 395 | 
            +
                    FunctionInfo memory func;
         | 
| 412 396 | 
             
                    Selector selector;
         | 
| 413 397 |  | 
| 414 398 | 
             
                    for (uint256 i = 0; i < n; i++) {
         | 
| @@ -420,102 +404,11 @@ contract AccessAdmin is | |
| 420 404 | 
             
                        else { SelectorSetLib.remove(_targetFunctions[target], selector); }
         | 
| 421 405 |  | 
| 422 406 | 
             
                        // set function name
         | 
| 423 | 
            -
                         | 
| 407 | 
            +
                        _functionInfo[target][selector] = func;
         | 
| 424 408 |  | 
| 425 409 | 
             
                        // add bytes4 selector to function selector array
         | 
| 426 410 | 
             
                        functionSelectors[i] = selector.toBytes4();
         | 
| 427 | 
            -
             | 
| 428 | 
            -
                }
         | 
| 429 | 
            -
             | 
| 430 | 
            -
                function _initializeAuthority(
         | 
| 431 | 
            -
                    address authorityAddress
         | 
| 432 | 
            -
                )
         | 
| 433 | 
            -
                    internal
         | 
| 434 | 
            -
                    virtual
         | 
| 435 | 
            -
                    onlyInitializing()
         | 
| 436 | 
            -
                    onlyDeployer()
         | 
| 437 | 
            -
                {
         | 
| 438 | 
            -
                    if (authority() != address(0)) {
         | 
| 439 | 
            -
                        revert ErrorAuthorityAlreadySet();
         | 
| 440 | 
            -
                    }
         | 
| 441 | 
            -
             | 
| 442 | 
            -
                    _authority = AccessManager(authorityAddress);
         | 
| 443 | 
            -
             | 
| 444 | 
            -
                    if(!hasRole(address(this), RoleId.wrap(_authority.ADMIN_ROLE()))) {
         | 
| 445 | 
            -
                        revert ErrorAdminRoleMissing();
         | 
| 446 | 
            -
                    }
         | 
| 447 | 
            -
             | 
| 448 | 
            -
                    __AccessManaged_init(address(_authority));
         | 
| 449 | 
            -
                }
         | 
| 450 | 
            -
             | 
| 451 | 
            -
             | 
| 452 | 
            -
                function _initializeRoleSetup()
         | 
| 453 | 
            -
                    internal
         | 
| 454 | 
            -
                    virtual
         | 
| 455 | 
            -
                    onlyInitializing()
         | 
| 456 | 
            -
                {
         | 
| 457 | 
            -
                    _createInitialRoleSetup();
         | 
| 458 | 
            -
                }
         | 
| 459 | 
            -
             | 
| 460 | 
            -
             | 
| 461 | 
            -
                function _createInitialRoleSetup()
         | 
| 462 | 
            -
                    internal
         | 
| 463 | 
            -
                {
         | 
| 464 | 
            -
                    RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
         | 
| 465 | 
            -
                    Function[] memory functions;
         | 
| 466 | 
            -
             | 
| 467 | 
            -
                    // setup admin role
         | 
| 468 | 
            -
                    _createRoleUnchecked(
         | 
| 469 | 
            -
                        adminRoleId,
         | 
| 470 | 
            -
                        adminRoleId,
         | 
| 471 | 
            -
                        StrLib.toStr(ADMIN_ROLE_NAME),
         | 
| 472 | 
            -
                        1,
         | 
| 473 | 
            -
                        true);
         | 
| 474 | 
            -
             | 
| 475 | 
            -
                    // add this contract as admin role member
         | 
| 476 | 
            -
                    _roleMembers[adminRoleId].add(address(this));
         | 
| 477 | 
            -
             | 
| 478 | 
            -
                    // setup public role
         | 
| 479 | 
            -
                    _createRoleUnchecked(
         | 
| 480 | 
            -
                        RoleIdLib.toRoleId(_authority.PUBLIC_ROLE()),
         | 
| 481 | 
            -
                        adminRoleId,
         | 
| 482 | 
            -
                        StrLib.toStr(PUBLIC_ROLE_NAME),
         | 
| 483 | 
            -
                        type(uint256).max,
         | 
| 484 | 
            -
                        true);
         | 
| 485 | 
            -
             | 
| 486 | 
            -
                    // setup manager role
         | 
| 487 | 
            -
                    _managerRoleId = RoleIdLib.toRoleId(MANAGER_ROLE);
         | 
| 488 | 
            -
                    _createRole(
         | 
| 489 | 
            -
                        _managerRoleId, 
         | 
| 490 | 
            -
                        adminRoleId,
         | 
| 491 | 
            -
                        MANAGER_ROLE_NAME,
         | 
| 492 | 
            -
                        3, // TODO think about max member count
         | 
| 493 | 
            -
                        false);
         | 
| 494 | 
            -
             | 
| 495 | 
            -
                    // grant public role access to grant and revoke, renounce
         | 
| 496 | 
            -
                    functions = new Function[](3);
         | 
| 497 | 
            -
                    functions[0] = toFunction(IAccessAdmin.grantRole.selector, "grantRole");
         | 
| 498 | 
            -
                    functions[1] = toFunction(IAccessAdmin.revokeRole.selector, "revokeRole");
         | 
| 499 | 
            -
                    functions[2] = toFunction(IAccessAdmin.renounceRole.selector, "renounceRole");
         | 
| 500 | 
            -
                    _authorizeTargetFunctions(address(this), getPublicRole(), functions);
         | 
| 501 | 
            -
             | 
| 502 | 
            -
                    // grant manager role access to the specified functions 
         | 
| 503 | 
            -
                    functions = new Function[](6);
         | 
| 504 | 
            -
                    functions[0] = toFunction(IAccessAdmin.createRole.selector, "createRole");
         | 
| 505 | 
            -
                    functions[1] = toFunction(IAccessAdmin.setRoleDisabled.selector, "setRoleDisabled");
         | 
| 506 | 
            -
                    functions[2] = toFunction(IAccessAdmin.createTarget.selector, "createTarget");
         | 
| 507 | 
            -
                    functions[3] = toFunction(IAccessAdmin.setTargetLocked.selector, "setTargetLocked");
         | 
| 508 | 
            -
                    functions[4] = toFunction(IAccessAdmin.authorizeFunctions.selector, "authorizeFunctions");
         | 
| 509 | 
            -
                    functions[5] = toFunction(IAccessAdmin.unauthorizeFunctions.selector, "unauthorizeFunctions");
         | 
| 510 | 
            -
                    _authorizeTargetFunctions(address(this), getManagerRole(), functions);
         | 
| 511 | 
            -
                }
         | 
| 512 | 
            -
             | 
| 513 | 
            -
                /// @dev check if target exists and reverts if it doesn't
         | 
| 514 | 
            -
                function _checkTarget(address target)
         | 
| 515 | 
            -
                    internal
         | 
| 516 | 
            -
                {
         | 
| 517 | 
            -
                    if (_targetInfo[target].createdAt.eqz()) {
         | 
| 518 | 
            -
                        revert ErrorTargetUnknown(target);
         | 
| 411 | 
            +
                        functionNames[i] = func.name.toString();
         | 
| 519 412 | 
             
                    }
         | 
| 520 413 | 
             
                }
         | 
| 521 414 |  | 
| @@ -523,90 +416,85 @@ contract AccessAdmin is | |
| 523 416 | 
             
                function _grantRoleAccessToFunctions(
         | 
| 524 417 | 
             
                    address target,
         | 
| 525 418 | 
             
                    RoleId roleId, 
         | 
| 526 | 
            -
                    bytes4[] memory functionSelectors
         | 
| 419 | 
            +
                    bytes4[] memory functionSelectors,
         | 
| 420 | 
            +
                    string[] memory functionNames,
         | 
| 421 | 
            +
                    bool allowLockedRoles // admin and public roles are locked
         | 
| 527 422 | 
             
                )
         | 
| 528 423 | 
             
                    internal
         | 
| 424 | 
            +
                    onlyExistingTarget(target)
         | 
| 425 | 
            +
                    onlyExistingRole(roleId, true, allowLockedRoles)
         | 
| 529 426 | 
             
                {
         | 
| 427 | 
            +
             | 
| 530 428 | 
             
                    _authority.setTargetFunctionRole(
         | 
| 531 429 | 
             
                        target,
         | 
| 532 430 | 
             
                        functionSelectors,
         | 
| 533 431 | 
             
                        RoleId.unwrap(roleId));
         | 
| 534 432 |  | 
| 535 | 
            -
                     | 
| 433 | 
            +
                    for (uint256 i = 0; i < functionSelectors.length; i++) {
         | 
| 434 | 
            +
                        emit LogAccessAdminFunctionGranted(
         | 
| 435 | 
            +
                            target, 
         | 
| 436 | 
            +
                            // _getAccountName(target), 
         | 
| 437 | 
            +
                            // string(abi.encodePacked("", functionSelectors[i])), 
         | 
| 438 | 
            +
                            functionNames[i], 
         | 
| 439 | 
            +
                            _getRoleName(roleId));
         | 
| 440 | 
            +
                    }
         | 
| 536 441 | 
             
                }
         | 
| 537 442 |  | 
| 443 | 
            +
             | 
| 538 444 | 
             
                /// @dev grant the specified role to the provided account
         | 
| 539 445 | 
             
                function _grantRoleToAccount(RoleId roleId, address account)
         | 
| 540 446 | 
             
                    internal
         | 
| 447 | 
            +
                    onlyExistingRole(roleId, true, false)
         | 
| 541 448 | 
             
                {
         | 
| 542 | 
            -
                    _checkRoleId(roleId);
         | 
| 543 | 
            -
                    _checkRoleIsActive(roleId);
         | 
| 544 | 
            -
             | 
| 545 449 | 
             
                    // check max role members will not be exceeded
         | 
| 546 450 | 
             
                    if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
         | 
| 547 451 | 
             
                        revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
         | 
| 548 452 | 
             
                    }
         | 
| 549 453 |  | 
| 454 | 
            +
                    // check account is contract for contract role
         | 
| 455 | 
            +
                    if (
         | 
| 456 | 
            +
                        _roleInfo[roleId].roleType == RoleType.Contract &&
         | 
| 457 | 
            +
                        !ContractLib.isContract(account) // will fail in account's constructor
         | 
| 458 | 
            +
                    ) {
         | 
| 459 | 
            +
                        revert ErrorRoleMemberNotContract(roleId, account);
         | 
| 460 | 
            +
                    }
         | 
| 461 | 
            +
             | 
| 462 | 
            +
                    // TODO check account already have roleId
         | 
| 550 463 | 
             
                    _roleMembers[roleId].add(account);
         | 
| 551 464 | 
             
                    _authority.grantRole(
         | 
| 552 465 | 
             
                        RoleId.unwrap(roleId), 
         | 
| 553 466 | 
             
                        account, 
         | 
| 554 467 | 
             
                        0);
         | 
| 555 468 |  | 
| 556 | 
            -
                     | 
| 469 | 
            +
                    emit LogAccessAdminRoleGranted(account, _getRoleName(roleId));
         | 
| 557 470 | 
             
                }
         | 
| 558 471 |  | 
| 559 472 | 
             
                /// @dev revoke the specified role from the provided account
         | 
| 560 473 | 
             
                function _revokeRoleFromAccount(RoleId roleId, address account)
         | 
| 561 474 | 
             
                    internal
         | 
| 475 | 
            +
                    onlyExistingRole(roleId, false, false)
         | 
| 562 476 | 
             
                {
         | 
| 563 | 
            -
                    _checkRoleId(roleId);
         | 
| 564 477 |  | 
| 565 478 | 
             
                    // check role removal is permitted
         | 
| 566 | 
            -
                    if (_roleInfo[roleId]. | 
| 567 | 
            -
                        revert  | 
| 479 | 
            +
                    if (_roleInfo[roleId].roleType == RoleType.Contract) {
         | 
| 480 | 
            +
                        revert ErrorRoleMemberRemovalDisabled(roleId, account);
         | 
| 568 481 | 
             
                    }
         | 
| 569 482 |  | 
| 483 | 
            +
                    // TODO check account have roleId?
         | 
| 570 484 | 
             
                    _roleMembers[roleId].remove(account);
         | 
| 571 485 | 
             
                    _authority.revokeRole(
         | 
| 572 486 | 
             
                        RoleId.unwrap(roleId), 
         | 
| 573 487 | 
             
                        account);
         | 
| 574 488 |  | 
| 575 | 
            -
                     | 
| 576 | 
            -
                }
         | 
| 577 | 
            -
             | 
| 578 | 
            -
             | 
| 579 | 
            -
                function _checkRoleId(RoleId roleId)
         | 
| 580 | 
            -
                    internal
         | 
| 581 | 
            -
                {
         | 
| 582 | 
            -
                    if (!_roleInfo[roleId].exists) {
         | 
| 583 | 
            -
                        revert ErrorRoleUnknown(roleId);
         | 
| 584 | 
            -
                    }
         | 
| 585 | 
            -
             | 
| 586 | 
            -
                    uint64 roleIdInt = RoleId.unwrap(roleId);
         | 
| 587 | 
            -
                    if (roleIdInt == _authority.ADMIN_ROLE()
         | 
| 588 | 
            -
                        || roleIdInt == _authority.PUBLIC_ROLE())
         | 
| 589 | 
            -
                    {
         | 
| 590 | 
            -
                        revert ErrorRoleIsLocked(roleId);
         | 
| 591 | 
            -
                    }
         | 
| 592 | 
            -
                }
         | 
| 593 | 
            -
             | 
| 594 | 
            -
             | 
| 595 | 
            -
                function _checkRoleIsActive(RoleId roleId)
         | 
| 596 | 
            -
                    internal
         | 
| 597 | 
            -
                {
         | 
| 598 | 
            -
                    if (isRoleDisabled(roleId)) {
         | 
| 599 | 
            -
                        revert ErrorRoleIsDisabled(roleId);
         | 
| 600 | 
            -
                    }
         | 
| 489 | 
            +
                    emit LogAccessAdminRoleRevoked(account, _roleInfo[roleId].name.toString());
         | 
| 601 490 | 
             
                }
         | 
| 602 491 |  | 
| 603 492 |  | 
| 493 | 
            +
                /// @dev Creates a role based on the provided parameters.
         | 
| 494 | 
            +
                /// Checks that the provided role and role id and role name not already used.
         | 
| 604 495 | 
             
                function _createRole(
         | 
| 605 496 | 
             
                    RoleId roleId, 
         | 
| 606 | 
            -
                     | 
| 607 | 
            -
                    string memory roleName,
         | 
| 608 | 
            -
                    uint256 maxMemberCount,
         | 
| 609 | 
            -
                    bool memberRemovalDisabled
         | 
| 497 | 
            +
                    RoleInfo memory info
         | 
| 610 498 | 
             
                )
         | 
| 611 499 | 
             
                    internal
         | 
| 612 500 | 
             
                {
         | 
| @@ -618,83 +506,55 @@ contract AccessAdmin is | |
| 618 506 | 
             
                    }
         | 
| 619 507 |  | 
| 620 508 | 
             
                    // check admin role exists
         | 
| 621 | 
            -
                    if(!roleExists(adminRoleId)) {
         | 
| 622 | 
            -
                        revert ErrorRoleAdminNotExisting(adminRoleId);
         | 
| 509 | 
            +
                    if(!roleExists(info.adminRoleId)) {
         | 
| 510 | 
            +
                        revert ErrorRoleAdminNotExisting(info.adminRoleId);
         | 
| 623 511 | 
             
                    }
         | 
| 624 512 |  | 
| 625 513 | 
             
                    // check role name is not empty
         | 
| 626 | 
            -
                     | 
| 627 | 
            -
                    if(name.length() == 0) {
         | 
| 514 | 
            +
                    if(info.name.length() == 0) {
         | 
| 628 515 | 
             
                        revert ErrorRoleNameEmpty(roleId);
         | 
| 629 516 | 
             
                    }
         | 
| 630 517 |  | 
| 631 518 | 
             
                    // check role name is not used for another role
         | 
| 632 | 
            -
                    if(_roleForName[name].exists) {
         | 
| 519 | 
            +
                    if(_roleForName[info.name].exists) {
         | 
| 633 520 | 
             
                        revert ErrorRoleNameAlreadyExists(
         | 
| 634 521 | 
             
                            roleId, 
         | 
| 635 | 
            -
                             | 
| 636 | 
            -
                            _roleForName[name].roleId);
         | 
| 637 | 
            -
                    }
         | 
| 638 | 
            -
             | 
| 639 | 
            -
                    _createRoleUnchecked(
         | 
| 640 | 
            -
                        roleId, adminRoleId, 
         | 
| 641 | 
            -
                        name, 
         | 
| 642 | 
            -
                        maxMemberCount, 
         | 
| 643 | 
            -
                        memberRemovalDisabled);
         | 
| 644 | 
            -
                }
         | 
| 645 | 
            -
             | 
| 646 | 
            -
             | 
| 647 | 
            -
                function _setRoleDisabled(
         | 
| 648 | 
            -
                    RoleId roleId, 
         | 
| 649 | 
            -
                    bool disabled
         | 
| 650 | 
            -
                )
         | 
| 651 | 
            -
                    internal
         | 
| 652 | 
            -
                {
         | 
| 653 | 
            -
             | 
| 654 | 
            -
                    _checkRoleId(roleId);
         | 
| 655 | 
            -
                    Timestamp disabledAtOld = _roleInfo[roleId].disabledAt;
         | 
| 656 | 
            -
             | 
| 657 | 
            -
                    if (disabled) {
         | 
| 658 | 
            -
                        _roleInfo[roleId].disabledAt = TimestampLib.blockTimestamp();
         | 
| 659 | 
            -
                    } else {
         | 
| 660 | 
            -
                        _roleInfo[roleId].disabledAt = TimestampLib.max();
         | 
| 522 | 
            +
                            info.name.toString(),
         | 
| 523 | 
            +
                            _roleForName[info.name].roleId);
         | 
| 661 524 | 
             
                    }
         | 
| 662 525 |  | 
| 663 | 
            -
                     | 
| 526 | 
            +
                    _createRoleUnchecked(roleId, info);
         | 
| 664 527 | 
             
                }
         | 
| 665 528 |  | 
| 666 529 |  | 
| 667 530 | 
             
                function _createRoleUnchecked(
         | 
| 668 531 | 
             
                    RoleId roleId, 
         | 
| 669 | 
            -
                     | 
| 670 | 
            -
                    Str name,
         | 
| 671 | 
            -
                    uint256 maxMemberCount,
         | 
| 672 | 
            -
                    bool memberRemovalDisabled
         | 
| 532 | 
            +
                    RoleInfo memory info
         | 
| 673 533 | 
             
                )
         | 
| 674 534 | 
             
                    private
         | 
| 675 535 | 
             
                {
         | 
| 676 536 | 
             
                    // create role info
         | 
| 677 | 
            -
                     | 
| 678 | 
            -
             | 
| 679 | 
            -
                        name: name,
         | 
| 680 | 
            -
                        maxMemberCount: maxMemberCount,
         | 
| 681 | 
            -
                        memberRemovalDisabled: memberRemovalDisabled,
         | 
| 682 | 
            -
                        disabledAt: TimestampLib.max(),
         | 
| 683 | 
            -
                        exists: true});
         | 
| 537 | 
            +
                    info.createdAt = TimestampLib.blockTimestamp();
         | 
| 538 | 
            +
                    _roleInfo[roleId] = info;
         | 
| 684 539 |  | 
| 685 540 | 
             
                    // create role name info
         | 
| 686 | 
            -
                    _roleForName[name] = RoleNameInfo({
         | 
| 541 | 
            +
                    _roleForName[info.name] = RoleNameInfo({
         | 
| 687 542 | 
             
                        roleId: roleId,
         | 
| 688 543 | 
             
                        exists: true});
         | 
| 689 544 |  | 
| 690 545 | 
             
                    // add role to list of roles
         | 
| 691 546 | 
             
                    _roleIds.push(roleId);
         | 
| 692 547 |  | 
| 693 | 
            -
                    emit  | 
| 548 | 
            +
                    emit LogAccessAdminRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
         | 
| 694 549 | 
             
                }
         | 
| 695 550 |  | 
| 696 551 |  | 
| 697 | 
            -
                function _createTarget( | 
| 552 | 
            +
                function _createTarget(
         | 
| 553 | 
            +
                    address target, 
         | 
| 554 | 
            +
                    string memory targetName, 
         | 
| 555 | 
            +
                    bool checkAuthority,
         | 
| 556 | 
            +
                    bool custom
         | 
| 557 | 
            +
                )
         | 
| 698 558 | 
             
                    internal
         | 
| 699 559 | 
             
                {
         | 
| 700 560 | 
             
                    // check target does not yet exist
         | 
| @@ -710,7 +570,7 @@ contract AccessAdmin is | |
| 710 570 | 
             
                        revert ErrorTargetNameEmpty(target);
         | 
| 711 571 | 
             
                    }
         | 
| 712 572 |  | 
| 713 | 
            -
                    // check target name is not used for another  | 
| 573 | 
            +
                    // check target name is not used for another target
         | 
| 714 574 | 
             
                    if( _targetForName[name] != address(0)) {
         | 
| 715 575 | 
             
                        revert ErrorTargetNameAlreadyExists(
         | 
| 716 576 | 
             
                            target, 
         | 
| @@ -719,19 +579,22 @@ contract AccessAdmin is | |
| 719 579 | 
             
                    }
         | 
| 720 580 |  | 
| 721 581 | 
             
                    // check target is an access managed contract
         | 
| 722 | 
            -
                    if (! | 
| 582 | 
            +
                    if (!_isAccessManaged(target)) {
         | 
| 723 583 | 
             
                        revert ErrorTargetNotAccessManaged(target);
         | 
| 724 584 | 
             
                    }
         | 
| 725 585 |  | 
| 726 586 | 
             
                    // check target shares authority with this contract
         | 
| 727 | 
            -
                     | 
| 728 | 
            -
             | 
| 729 | 
            -
                         | 
| 587 | 
            +
                    if (checkAuthority) {
         | 
| 588 | 
            +
                        address targetAuthority = AccessManagedUpgradeable(target).authority();
         | 
| 589 | 
            +
                        if (targetAuthority != authority()) {
         | 
| 590 | 
            +
                            revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
         | 
| 591 | 
            +
                        }
         | 
| 730 592 | 
             
                    }
         | 
| 731 593 |  | 
| 732 594 | 
             
                    // create target info
         | 
| 733 595 | 
             
                    _targetInfo[target] = TargetInfo({
         | 
| 734 596 | 
             
                        name: name,
         | 
| 597 | 
            +
                        isCustom: custom,
         | 
| 735 598 | 
             
                        createdAt: TimestampLib.blockTimestamp()
         | 
| 736 599 | 
             
                    });
         | 
| 737 600 |  | 
| @@ -741,19 +604,86 @@ contract AccessAdmin is | |
| 741 604 | 
             
                    // add role to list of roles
         | 
| 742 605 | 
             
                    _targets.push(target);
         | 
| 743 606 |  | 
| 744 | 
            -
                    emit  | 
| 607 | 
            +
                    emit LogAccessAdminTargetCreated(target, targetName);
         | 
| 745 608 | 
             
                }
         | 
| 746 609 |  | 
| 747 | 
            -
             | 
| 610 | 
            +
             | 
| 611 | 
            +
                function _isAccessManaged(address target)
         | 
| 748 612 | 
             
                    internal
         | 
| 749 | 
            -
                    view | 
| 613 | 
            +
                    view
         | 
| 750 614 | 
             
                    returns (bool)
         | 
| 751 615 | 
             
                {
         | 
| 752 | 
            -
                     | 
| 753 | 
            -
             | 
| 754 | 
            -
             | 
| 616 | 
            +
                    if (!ContractLib.isContract(target)) {
         | 
| 617 | 
            +
                        return false;
         | 
| 618 | 
            +
                    }
         | 
| 619 | 
            +
             | 
| 620 | 
            +
                    (bool success, ) = target.staticcall(
         | 
| 621 | 
            +
                        abi.encodeWithSelector(
         | 
| 622 | 
            +
                            IAccessManagedChecker.authority.selector));
         | 
| 623 | 
            +
             | 
| 624 | 
            +
                    return success;
         | 
| 625 | 
            +
                }
         | 
| 626 | 
            +
             | 
| 627 | 
            +
             | 
| 628 | 
            +
                function _setTargetClosed(address target, bool locked)
         | 
| 629 | 
            +
                    internal
         | 
| 630 | 
            +
                {
         | 
| 631 | 
            +
                    _checkTarget(target);
         | 
| 632 | 
            +
             | 
| 633 | 
            +
                    // target locked/unlocked already
         | 
| 634 | 
            +
                    if(_authority.isTargetClosed(target) == locked) {
         | 
| 635 | 
            +
                        revert ErrorTargetAlreadyLocked(target, locked);
         | 
| 636 | 
            +
                    }
         | 
| 637 | 
            +
             | 
| 638 | 
            +
                    _authority.setTargetClosed(target, locked);
         | 
| 639 | 
            +
                }
         | 
| 640 | 
            +
             | 
| 641 | 
            +
                function _getAccountName(address account) internal view returns (string memory) {
         | 
| 642 | 
            +
                    if (targetExists(account)) {
         | 
| 643 | 
            +
                        return _targetInfo[account].name.toString();
         | 
| 644 | 
            +
                    }
         | 
| 645 | 
            +
                    return "<unknown-account>";
         | 
| 646 | 
            +
                }
         | 
| 647 | 
            +
             | 
| 648 | 
            +
             | 
| 649 | 
            +
                function _getRoleName(RoleId roleId) internal view returns (string memory) {
         | 
| 650 | 
            +
                    if (roleExists(roleId)) {
         | 
| 651 | 
            +
                        return _roleInfo[roleId].name.toString();
         | 
| 652 | 
            +
                    }
         | 
| 653 | 
            +
                    return "<unknown-role>";
         | 
| 654 | 
            +
                }
         | 
| 655 | 
            +
             | 
| 656 | 
            +
             | 
| 657 | 
            +
                function _checkRoleExists(
         | 
| 658 | 
            +
                    RoleId roleId, 
         | 
| 659 | 
            +
                    bool onlyActiveRole
         | 
| 660 | 
            +
                )
         | 
| 661 | 
            +
                    internal
         | 
| 662 | 
            +
                    view
         | 
| 663 | 
            +
                {
         | 
| 664 | 
            +
                    if (!roleExists(roleId)) {
         | 
| 665 | 
            +
                        revert ErrorRoleUnknown(roleId);
         | 
| 666 | 
            +
                    }
         | 
| 667 | 
            +
             | 
| 668 | 
            +
                    uint64 roleIdInt = RoleId.unwrap(roleId);
         | 
| 669 | 
            +
                    if (roleIdInt == _authority.ADMIN_ROLE()) {
         | 
| 670 | 
            +
                        revert ErrorRoleIsLocked(roleId);
         | 
| 671 | 
            +
                    }
         | 
| 672 | 
            +
             | 
| 673 | 
            +
                    // check if role is disabled
         | 
| 674 | 
            +
                    if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
         | 
| 675 | 
            +
                        revert ErrorRoleIsPaused(roleId);
         | 
| 676 | 
            +
                    }
         | 
| 677 | 
            +
                }
         | 
| 678 | 
            +
             | 
| 679 | 
            +
             | 
| 680 | 
            +
                /// @dev check if target exists and reverts if it doesn't
         | 
| 681 | 
            +
                function _checkTarget(address target)
         | 
| 682 | 
            +
                    internal
         | 
| 683 | 
            +
                    view
         | 
| 684 | 
            +
                {
         | 
| 685 | 
            +
                    if (!targetExists(target)) {
         | 
| 686 | 
            +
                        revert ErrorTargetUnknown(target);
         | 
| 755 687 | 
             
                    }
         | 
| 756 | 
            -
                    return size > 0;
         | 
| 757 688 | 
             
                }
         | 
| 758 | 
            -
                
         | 
| 759 689 | 
             
            }
         |