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