@etherisc/gif-next 0.0.2-f1f3b2c-994 → 0.0.2-f2273b3-211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +163 -55
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- 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 +94 -14
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +8 -8
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +113 -130
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +275 -171
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +111 -65
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
- 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 +158 -195
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +336 -295
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
- 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 +215 -168
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -153
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +717 -292
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +386 -117
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +590 -204
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +445 -375
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +3 -3
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -173
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- 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 +94 -106
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +108 -125
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +156 -326
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +330 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +130 -54
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +71 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +181 -116
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +224 -182
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +112 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +142 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +277 -213
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +3 -3
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +337 -65
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +12 -12
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +105 -104
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -86
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +94 -106
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- 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 +16 -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 +148 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.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 +18 -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 +152 -38
- 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 +55 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -136
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -49
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -206
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +3 -3
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -57
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +181 -55
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +130 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- 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 +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +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 +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- 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 +62 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +216 -125
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -205
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +14 -8
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +41 -47
- package/contracts/distribution/DistributionService.sol +100 -78
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +25 -10
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +40 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +17 -10
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +52 -34
- package/contracts/instance/InstanceAdmin.sol +249 -100
- package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +85 -146
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +10 -7
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +107 -78
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +88 -154
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -64
- package/contracts/pool/Pool.sol +112 -120
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +436 -242
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +24 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -12
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +202 -151
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +10 -1
- package/contracts/product/PolicyService.sol +248 -252
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +30 -26
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -60
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +14 -15
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +29 -6
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +40 -58
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +139 -124
- package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +69 -118
- package/contracts/shared/ComponentService.sol +422 -371
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +8 -20
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +68 -42
- package/contracts/shared/Lifecycle.sol +7 -7
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +53 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +9 -31
- package/contracts/shared/TokenHandler.sol +274 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -10
- package/contracts/staking/IStakingService.sol +12 -4
- package/contracts/staking/StakeManagerLib.sol +69 -20
- package/contracts/staking/Staking.sol +73 -41
- package/contracts/staking/StakingReader.sol +1 -16
- package/contracts/staking/StakingService.sol +70 -24
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +3 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
| @@ -8,11 +8,16 @@ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/ut | |
| 8 8 | 
             
            import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
         | 
| 9 9 | 
             
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 10 10 | 
             
            import {IAccessAdmin} from "./IAccessAdmin.sol";
         | 
| 11 | 
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 11 12 | 
             
            import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 12 13 | 
             
            import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
         | 
| 13 14 | 
             
            import {Str, StrLib} from "../type/String.sol";
         | 
| 14 15 | 
             
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 16 | 
            +
            import {VersionPart} from "../type/Version.sol";
         | 
| 15 17 |  | 
| 18 | 
            +
            interface IAccessManagedChecker {
         | 
| 19 | 
            +
                function authority() external view returns (address);
         | 
| 20 | 
            +
            }
         | 
| 16 21 |  | 
| 17 22 | 
             
            /**
         | 
| 18 23 | 
             
             * @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
         | 
| @@ -68,7 +73,7 @@ contract AccessAdmin is | |
| 68 73 |  | 
| 69 74 | 
             
                modifier onlyDeployer() {
         | 
| 70 75 | 
             
                    // special case for cloned AccessAdmin contracts
         | 
| 71 | 
            -
                    // IMPORTANT cloning and  | 
| 76 | 
            +
                    // IMPORTANT cloning and initialize authority needs to be done in a single transaction
         | 
| 72 77 | 
             
                    if (_deployer == address(0)) {
         | 
| 73 78 | 
             
                        _deployer = msg.sender;
         | 
| 74 79 | 
             
                    }
         | 
| @@ -80,9 +85,7 @@ contract AccessAdmin is | |
| 80 85 | 
             
                }
         | 
| 81 86 |  | 
| 82 87 | 
             
                modifier onlyRoleAdmin(RoleId roleId) {
         | 
| 83 | 
            -
                     | 
| 84 | 
            -
                        revert ErrorRoleUnknown(roleId);
         | 
| 85 | 
            -
                    }
         | 
| 88 | 
            +
                    _checkRoleExists(roleId, false);
         | 
| 86 89 |  | 
| 87 90 | 
             
                    if (!hasAdminRole(msg.sender, roleId)) {
         | 
| 88 91 | 
             
                        revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
         | 
| @@ -97,8 +100,15 @@ contract AccessAdmin is | |
| 97 100 | 
             
                    _;
         | 
| 98 101 | 
             
                }
         | 
| 99 102 |  | 
| 100 | 
            -
                modifier onlyExistingRole( | 
| 101 | 
            -
                     | 
| 103 | 
            +
                modifier onlyExistingRole(
         | 
| 104 | 
            +
                    RoleId roleId, 
         | 
| 105 | 
            +
                    bool onlyActiveRole,
         | 
| 106 | 
            +
                    bool allowLockedRoles
         | 
| 107 | 
            +
                )
         | 
| 108 | 
            +
                {
         | 
| 109 | 
            +
                    if (!allowLockedRoles) {
         | 
| 110 | 
            +
                        _checkRoleExists(roleId, onlyActiveRole);
         | 
| 111 | 
            +
                    }
         | 
| 102 112 | 
             
                    _;
         | 
| 103 113 | 
             
                }
         | 
| 104 114 |  | 
| @@ -107,15 +117,90 @@ contract AccessAdmin is | |
| 107 117 | 
             
                    _;
         | 
| 108 118 | 
             
                }
         | 
| 109 119 |  | 
| 110 | 
            -
                 | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 120 | 
            +
                //-------------- initialization functions ------------------------------//
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                // event LogAccessAdminDebug(string message);
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                /// @dev Initializes this admin with the provided accessManager (and authorization specification).
         | 
| 125 | 
            +
                /// Internally initializes access manager with this admin and creates basic role setup.
         | 
| 126 | 
            +
                function initialize(
         | 
| 127 | 
            +
                    AccessManagerCloneable authority 
         | 
| 128 | 
            +
                )
         | 
| 129 | 
            +
                    public
         | 
| 130 | 
            +
                    initializer()
         | 
| 131 | 
            +
                {
         | 
| 132 | 
            +
                    __AccessAdmin_init(authority);
         | 
| 133 | 
            +
                }
         | 
| 134 | 
            +
             | 
| 135 | 
            +
             | 
| 136 | 
            +
                function __AccessAdmin_init(
         | 
| 137 | 
            +
                    AccessManagerCloneable authority 
         | 
| 138 | 
            +
                )
         | 
| 139 | 
            +
                    internal
         | 
| 140 | 
            +
                    onlyInitializing()
         | 
| 141 | 
            +
                    onlyDeployer() // initializes deployer if not initialized yet
         | 
| 142 | 
            +
                {
         | 
| 143 | 
            +
                    authority.initialize(address(this));
         | 
| 144 | 
            +
             | 
| 145 | 
            +
                    // set and initialize this access manager contract as
         | 
| 146 | 
            +
                    // the admin (ADMIN_ROLE) of the provided authority
         | 
| 147 | 
            +
                    __AccessManaged_init(address(authority));
         | 
| 148 | 
            +
                    _authority = authority;
         | 
| 149 | 
            +
             | 
| 150 | 
            +
                    // create admin and public roles
         | 
| 151 | 
            +
                    _initializeAdminAndPublicRoles();
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                    // additional use case specific initialization
         | 
| 154 | 
            +
                    _initializeCustom();
         | 
| 155 | 
            +
                }
         | 
| 156 | 
            +
             | 
| 114 157 |  | 
| 115 | 
            -
             | 
| 116 | 
            -
                     | 
| 158 | 
            +
                function getRegistry() public view returns (IRegistry registry) {
         | 
| 159 | 
            +
                    return _authority.getRegistry();
         | 
| 117 160 | 
             
                }
         | 
| 118 161 |  | 
| 162 | 
            +
             | 
| 163 | 
            +
                function getRelease() public view returns (VersionPart release) {
         | 
| 164 | 
            +
                    return _authority.getRelease();
         | 
| 165 | 
            +
                }
         | 
| 166 | 
            +
             | 
| 167 | 
            +
             | 
| 168 | 
            +
                function _initializeAdminAndPublicRoles()
         | 
| 169 | 
            +
                    internal
         | 
| 170 | 
            +
                    virtual
         | 
| 171 | 
            +
                    onlyInitializing()
         | 
| 172 | 
            +
                {
         | 
| 173 | 
            +
                    RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
         | 
| 174 | 
            +
             | 
| 175 | 
            +
                    // setup admin role
         | 
| 176 | 
            +
                    _createRoleUnchecked(
         | 
| 177 | 
            +
                        ADMIN_ROLE(),
         | 
| 178 | 
            +
                        toRole({
         | 
| 179 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 180 | 
            +
                            roleType: RoleType.Contract,
         | 
| 181 | 
            +
                            maxMemberCount: 1,
         | 
| 182 | 
            +
                            name: ADMIN_ROLE_NAME}));
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                    // add this contract as admin role member
         | 
| 185 | 
            +
                    _roleMembers[adminRoleId].add(address(this));
         | 
| 186 | 
            +
             | 
| 187 | 
            +
                    // setup public role
         | 
| 188 | 
            +
                    _createRoleUnchecked(
         | 
| 189 | 
            +
                        PUBLIC_ROLE(),
         | 
| 190 | 
            +
                        toRole({
         | 
| 191 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 192 | 
            +
                            roleType: RoleType.Gif,
         | 
| 193 | 
            +
                            maxMemberCount: type(uint32).max,
         | 
| 194 | 
            +
                            name: PUBLIC_ROLE_NAME}));
         | 
| 195 | 
            +
                }
         | 
| 196 | 
            +
             | 
| 197 | 
            +
             | 
| 198 | 
            +
                function _initializeCustom()
         | 
| 199 | 
            +
                    internal
         | 
| 200 | 
            +
                    virtual
         | 
| 201 | 
            +
                    onlyInitializing()
         | 
| 202 | 
            +
                { }
         | 
| 203 | 
            +
             | 
| 119 204 | 
             
                //--- view functions for roles ------------------------------------------//
         | 
| 120 205 |  | 
| 121 206 | 
             
                function roles() external view returns (uint256 numberOfRoles) {
         | 
| @@ -154,6 +239,7 @@ contract AccessAdmin is | |
| 154 239 | 
             
                    return _roleMembers[roleId].at(idx);
         | 
| 155 240 | 
             
                }
         | 
| 156 241 |  | 
| 242 | 
            +
                // TODO false because not role member or because role not exists?
         | 
| 157 243 | 
             
                function hasRole(address account, RoleId roleId) public view returns (bool) {
         | 
| 158 244 | 
             
                    (bool isMember, ) = _authority.hasRole(
         | 
| 159 245 | 
             
                        RoleId.unwrap(roleId), 
         | 
| @@ -219,19 +305,6 @@ contract AccessAdmin is | |
| 219 305 | 
             
                            selector.toBytes4()));
         | 
| 220 306 | 
             
                }
         | 
| 221 307 |  | 
| 222 | 
            -
                // TODO cleanup
         | 
| 223 | 
            -
                // function isAccessManaged(address target) public view returns (bool) {
         | 
| 224 | 
            -
                //     if (!_isContract(target)) {
         | 
| 225 | 
            -
                //         return false;
         | 
| 226 | 
            -
                //     }
         | 
| 227 | 
            -
             | 
| 228 | 
            -
                //     (bool success, ) = target.staticcall(
         | 
| 229 | 
            -
                //         abi.encodeWithSelector(
         | 
| 230 | 
            -
                //             AccessManagedUpgradeable.authority.selector));
         | 
| 231 | 
            -
             | 
| 232 | 
            -
                //     return success;
         | 
| 233 | 
            -
                // }
         | 
| 234 | 
            -
             | 
| 235 308 | 
             
                function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
         | 
| 236 309 | 
             
                    (can, ) = _authority.canCall(caller, target, selector.toBytes4());
         | 
| 237 310 | 
             
                }
         | 
| @@ -242,7 +315,8 @@ contract AccessAdmin is | |
| 242 315 | 
             
                        adminRoleId: adminRoleId,
         | 
| 243 316 | 
             
                        roleType: roleType,
         | 
| 244 317 | 
             
                        maxMemberCount: maxMemberCount,
         | 
| 245 | 
            -
                        createdAt: TimestampLib.blockTimestamp()
         | 
| 318 | 
            +
                        createdAt: TimestampLib.blockTimestamp(),
         | 
| 319 | 
            +
                        pausedAt: TimestampLib.max()
         | 
| 246 320 | 
             
                    });
         | 
| 247 321 | 
             
                }
         | 
| 248 322 |  | 
| @@ -270,11 +344,18 @@ contract AccessAdmin is | |
| 270 344 | 
             
                        revert ErrorAuthorizeForAdminRoleInvalid(target);
         | 
| 271 345 | 
             
                    }
         | 
| 272 346 |  | 
| 273 | 
            -
                     | 
| 274 | 
            -
             | 
| 347 | 
            +
                    (
         | 
| 348 | 
            +
                        bytes4[] memory functionSelectors,
         | 
| 349 | 
            +
                        string[] memory functionNames
         | 
| 350 | 
            +
                    ) = _processFunctionSelectors(target, functions, true);
         | 
| 275 351 |  | 
| 276 352 | 
             
                    // apply authz via access manager
         | 
| 277 | 
            -
                    _grantRoleAccessToFunctions( | 
| 353 | 
            +
                    _grantRoleAccessToFunctions(
         | 
| 354 | 
            +
                        target, 
         | 
| 355 | 
            +
                        roleId, 
         | 
| 356 | 
            +
                        functionSelectors,
         | 
| 357 | 
            +
                        functionNames, 
         | 
| 358 | 
            +
                        false); // allow locked roles
         | 
| 278 359 | 
             
                }
         | 
| 279 360 |  | 
| 280 361 | 
             
                function _unauthorizeTargetFunctions(
         | 
| @@ -283,9 +364,17 @@ contract AccessAdmin is | |
| 283 364 | 
             
                )
         | 
| 284 365 | 
             
                    internal
         | 
| 285 366 | 
             
                {
         | 
| 286 | 
            -
                     | 
| 287 | 
            -
             | 
| 288 | 
            -
             | 
| 367 | 
            +
                    (
         | 
| 368 | 
            +
                        bytes4[] memory functionSelectors,
         | 
| 369 | 
            +
                        string[] memory functionNames
         | 
| 370 | 
            +
                    ) = _processFunctionSelectors(target, functions, false);
         | 
| 371 | 
            +
             | 
| 372 | 
            +
                    _grantRoleAccessToFunctions(
         | 
| 373 | 
            +
                        target, 
         | 
| 374 | 
            +
                        getAdminRole(), 
         | 
| 375 | 
            +
                        functionSelectors, 
         | 
| 376 | 
            +
                        functionNames, 
         | 
| 377 | 
            +
                        true);  // allowLockedRoles
         | 
| 289 378 | 
             
                }
         | 
| 290 379 |  | 
| 291 380 | 
             
                function _processFunctionSelectors(
         | 
| @@ -294,12 +383,15 @@ contract AccessAdmin is | |
| 294 383 | 
             
                    bool addFunctions
         | 
| 295 384 | 
             
                )
         | 
| 296 385 | 
             
                    internal
         | 
| 386 | 
            +
                    onlyExistingTarget(target)
         | 
| 297 387 | 
             
                    returns (
         | 
| 298 | 
            -
                        bytes4[] memory functionSelectors
         | 
| 388 | 
            +
                        bytes4[] memory functionSelectors,
         | 
| 389 | 
            +
                        string[] memory functionNames
         | 
| 299 390 | 
             
                    )
         | 
| 300 391 | 
             
                {
         | 
| 301 392 | 
             
                    uint256 n = functions.length;
         | 
| 302 393 | 
             
                    functionSelectors = new bytes4[](n);
         | 
| 394 | 
            +
                    functionNames = new string[](n);
         | 
| 303 395 | 
             
                    FunctionInfo memory func;
         | 
| 304 396 | 
             
                    Selector selector;
         | 
| 305 397 |  | 
| @@ -316,70 +408,7 @@ contract AccessAdmin is | |
| 316 408 |  | 
| 317 409 | 
             
                        // add bytes4 selector to function selector array
         | 
| 318 410 | 
             
                        functionSelectors[i] = selector.toBytes4();
         | 
| 319 | 
            -
             | 
| 320 | 
            -
                }
         | 
| 321 | 
            -
             | 
| 322 | 
            -
                function _initializeAuthority(
         | 
| 323 | 
            -
                    address authorityAddress
         | 
| 324 | 
            -
                )
         | 
| 325 | 
            -
                    internal
         | 
| 326 | 
            -
                    virtual
         | 
| 327 | 
            -
                    onlyInitializing()
         | 
| 328 | 
            -
                    onlyDeployer()
         | 
| 329 | 
            -
                {
         | 
| 330 | 
            -
                    if (authority() != address(0)) {
         | 
| 331 | 
            -
                        revert ErrorAuthorityAlreadySet();
         | 
| 332 | 
            -
                    }
         | 
| 333 | 
            -
             | 
| 334 | 
            -
                    _authority = AccessManagerCloneable(authorityAddress);
         | 
| 335 | 
            -
                    __AccessManaged_init(address(_authority));
         | 
| 336 | 
            -
                }
         | 
| 337 | 
            -
             | 
| 338 | 
            -
             | 
| 339 | 
            -
                function _initializeAdminAndPublicRoles()
         | 
| 340 | 
            -
                    internal
         | 
| 341 | 
            -
                    virtual
         | 
| 342 | 
            -
                    onlyInitializing()
         | 
| 343 | 
            -
                {
         | 
| 344 | 
            -
                    _createAdminAndPublicRoles();
         | 
| 345 | 
            -
                }
         | 
| 346 | 
            -
             | 
| 347 | 
            -
             | 
| 348 | 
            -
                /// @dev internal setup function that can be used in both constructor and initializer.
         | 
| 349 | 
            -
                function _createAdminAndPublicRoles()
         | 
| 350 | 
            -
                    internal
         | 
| 351 | 
            -
                {
         | 
| 352 | 
            -
                    RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
         | 
| 353 | 
            -
             | 
| 354 | 
            -
                    // setup admin role
         | 
| 355 | 
            -
                    _createRoleUnchecked(
         | 
| 356 | 
            -
                        ADMIN_ROLE(),
         | 
| 357 | 
            -
                        toRole({
         | 
| 358 | 
            -
                            adminRoleId: ADMIN_ROLE(),
         | 
| 359 | 
            -
                            roleType: RoleType.Contract,
         | 
| 360 | 
            -
                            maxMemberCount: 1,
         | 
| 361 | 
            -
                            name: ADMIN_ROLE_NAME}));
         | 
| 362 | 
            -
             | 
| 363 | 
            -
                    // add this contract as admin role member
         | 
| 364 | 
            -
                    _roleMembers[adminRoleId].add(address(this));
         | 
| 365 | 
            -
             | 
| 366 | 
            -
                    // setup public role
         | 
| 367 | 
            -
                    _createRoleUnchecked(
         | 
| 368 | 
            -
                        PUBLIC_ROLE(),
         | 
| 369 | 
            -
                        toRole({
         | 
| 370 | 
            -
                            adminRoleId: ADMIN_ROLE(),
         | 
| 371 | 
            -
                            roleType: RoleType.Gif,
         | 
| 372 | 
            -
                            maxMemberCount: type(uint32).max,
         | 
| 373 | 
            -
                            name: PUBLIC_ROLE_NAME}));
         | 
| 374 | 
            -
                }
         | 
| 375 | 
            -
             | 
| 376 | 
            -
                /// @dev check if target exists and reverts if it doesn't
         | 
| 377 | 
            -
                function _checkTarget(address target)
         | 
| 378 | 
            -
                    internal
         | 
| 379 | 
            -
                    view
         | 
| 380 | 
            -
                {
         | 
| 381 | 
            -
                    if (_targetInfo[target].createdAt.eqz()) {
         | 
| 382 | 
            -
                        revert ErrorTargetUnknown(target);
         | 
| 411 | 
            +
                        functionNames[i] = func.name.toString();
         | 
| 383 412 | 
             
                    }
         | 
| 384 413 | 
             
                }
         | 
| 385 414 |  | 
| @@ -387,24 +416,36 @@ contract AccessAdmin is | |
| 387 416 | 
             
                function _grantRoleAccessToFunctions(
         | 
| 388 417 | 
             
                    address target,
         | 
| 389 418 | 
             
                    RoleId roleId, 
         | 
| 390 | 
            -
                    bytes4[] memory functionSelectors
         | 
| 419 | 
            +
                    bytes4[] memory functionSelectors,
         | 
| 420 | 
            +
                    string[] memory functionNames,
         | 
| 421 | 
            +
                    bool allowLockedRoles // admin and public roles are locked
         | 
| 391 422 | 
             
                )
         | 
| 392 423 | 
             
                    internal
         | 
| 424 | 
            +
                    onlyExistingTarget(target)
         | 
| 425 | 
            +
                    onlyExistingRole(roleId, true, allowLockedRoles)
         | 
| 393 426 | 
             
                {
         | 
| 427 | 
            +
             | 
| 394 428 | 
             
                    _authority.setTargetFunctionRole(
         | 
| 395 429 | 
             
                        target,
         | 
| 396 430 | 
             
                        functionSelectors,
         | 
| 397 431 | 
             
                        RoleId.unwrap(roleId));
         | 
| 398 432 |  | 
| 399 | 
            -
                     | 
| 433 | 
            +
                    for (uint256 i = 0; i < functionSelectors.length; i++) {
         | 
| 434 | 
            +
                        emit LogAccessAdminFunctionGranted(
         | 
| 435 | 
            +
                            target, 
         | 
| 436 | 
            +
                            // _getAccountName(target), 
         | 
| 437 | 
            +
                            // string(abi.encodePacked("", functionSelectors[i])), 
         | 
| 438 | 
            +
                            functionNames[i], 
         | 
| 439 | 
            +
                            _getRoleName(roleId));
         | 
| 440 | 
            +
                    }
         | 
| 400 441 | 
             
                }
         | 
| 401 442 |  | 
| 443 | 
            +
             | 
| 402 444 | 
             
                /// @dev grant the specified role to the provided account
         | 
| 403 445 | 
             
                function _grantRoleToAccount(RoleId roleId, address account)
         | 
| 404 446 | 
             
                    internal
         | 
| 447 | 
            +
                    onlyExistingRole(roleId, true, false)
         | 
| 405 448 | 
             
                {
         | 
| 406 | 
            -
                    _checkRoleId(roleId);
         | 
| 407 | 
            -
             | 
| 408 449 | 
             
                    // check max role members will not be exceeded
         | 
| 409 450 | 
             
                    if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
         | 
| 410 451 | 
             
                        revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
         | 
| @@ -413,7 +454,7 @@ contract AccessAdmin is | |
| 413 454 | 
             
                    // check account is contract for contract role
         | 
| 414 455 | 
             
                    if (
         | 
| 415 456 | 
             
                        _roleInfo[roleId].roleType == RoleType.Contract &&
         | 
| 416 | 
            -
                        account | 
| 457 | 
            +
                        !ContractLib.isContract(account) // will fail in account's constructor
         | 
| 417 458 | 
             
                    ) {
         | 
| 418 459 | 
             
                        revert ErrorRoleMemberNotContract(roleId, account);
         | 
| 419 460 | 
             
                    }
         | 
| @@ -425,14 +466,14 @@ contract AccessAdmin is | |
| 425 466 | 
             
                        account, 
         | 
| 426 467 | 
             
                        0);
         | 
| 427 468 |  | 
| 428 | 
            -
                     | 
| 469 | 
            +
                    emit LogAccessAdminRoleGranted(account, _getRoleName(roleId));
         | 
| 429 470 | 
             
                }
         | 
| 430 471 |  | 
| 431 472 | 
             
                /// @dev revoke the specified role from the provided account
         | 
| 432 473 | 
             
                function _revokeRoleFromAccount(RoleId roleId, address account)
         | 
| 433 474 | 
             
                    internal
         | 
| 475 | 
            +
                    onlyExistingRole(roleId, false, false)
         | 
| 434 476 | 
             
                {
         | 
| 435 | 
            -
                    _checkRoleId(roleId);
         | 
| 436 477 |  | 
| 437 478 | 
             
                    // check role removal is permitted
         | 
| 438 479 | 
             
                    if (_roleInfo[roleId].roleType == RoleType.Contract) {
         | 
| @@ -445,26 +486,10 @@ contract AccessAdmin is | |
| 445 486 | 
             
                        RoleId.unwrap(roleId), 
         | 
| 446 487 | 
             
                        account);
         | 
| 447 488 |  | 
| 448 | 
            -
                     | 
| 489 | 
            +
                    emit LogAccessAdminRoleRevoked(account, _roleInfo[roleId].name.toString());
         | 
| 449 490 | 
             
                }
         | 
| 450 491 |  | 
| 451 492 |  | 
| 452 | 
            -
                function _checkRoleId(RoleId roleId)
         | 
| 453 | 
            -
                    internal
         | 
| 454 | 
            -
                    view
         | 
| 455 | 
            -
                {
         | 
| 456 | 
            -
                    if (_roleInfo[roleId].createdAt.eqz()) {
         | 
| 457 | 
            -
                        revert ErrorRoleUnknown(roleId);
         | 
| 458 | 
            -
                    }
         | 
| 459 | 
            -
             | 
| 460 | 
            -
                    uint64 roleIdInt = RoleId.unwrap(roleId);
         | 
| 461 | 
            -
                    if (roleIdInt == _authority.ADMIN_ROLE()
         | 
| 462 | 
            -
                        || roleIdInt == _authority.PUBLIC_ROLE())
         | 
| 463 | 
            -
                    {
         | 
| 464 | 
            -
                        revert ErrorRoleIsLocked(roleId);
         | 
| 465 | 
            -
                    }
         | 
| 466 | 
            -
                }
         | 
| 467 | 
            -
             | 
| 468 493 | 
             
                /// @dev Creates a role based on the provided parameters.
         | 
| 469 494 | 
             
                /// Checks that the provided role and role id and role name not already used.
         | 
| 470 495 | 
             
                function _createRole(
         | 
| @@ -520,7 +545,7 @@ contract AccessAdmin is | |
| 520 545 | 
             
                    // add role to list of roles
         | 
| 521 546 | 
             
                    _roleIds.push(roleId);
         | 
| 522 547 |  | 
| 523 | 
            -
                    emit  | 
| 548 | 
            +
                    emit LogAccessAdminRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
         | 
| 524 549 | 
             
                }
         | 
| 525 550 |  | 
| 526 551 |  | 
| @@ -531,7 +556,6 @@ contract AccessAdmin is | |
| 531 556 | 
             
                    bool custom
         | 
| 532 557 | 
             
                )
         | 
| 533 558 | 
             
                    internal
         | 
| 534 | 
            -
                    nonReentrant()
         | 
| 535 559 | 
             
                {
         | 
| 536 560 | 
             
                    // check target does not yet exist
         | 
| 537 561 | 
             
                    if(targetExists(target)) {
         | 
| @@ -555,7 +579,7 @@ contract AccessAdmin is | |
| 555 579 | 
             
                    }
         | 
| 556 580 |  | 
| 557 581 | 
             
                    // check target is an access managed contract
         | 
| 558 | 
            -
                    if (! | 
| 582 | 
            +
                    if (!_isAccessManaged(target)) {
         | 
| 559 583 | 
             
                        revert ErrorTargetNotAccessManaged(target);
         | 
| 560 584 | 
             
                    }
         | 
| 561 585 |  | 
| @@ -580,9 +604,27 @@ contract AccessAdmin is | |
| 580 604 | 
             
                    // add role to list of roles
         | 
| 581 605 | 
             
                    _targets.push(target);
         | 
| 582 606 |  | 
| 583 | 
            -
                    emit  | 
| 607 | 
            +
                    emit LogAccessAdminTargetCreated(target, targetName);
         | 
| 584 608 | 
             
                }
         | 
| 585 609 |  | 
| 610 | 
            +
             | 
| 611 | 
            +
                function _isAccessManaged(address target)
         | 
| 612 | 
            +
                    internal
         | 
| 613 | 
            +
                    view
         | 
| 614 | 
            +
                    returns (bool)
         | 
| 615 | 
            +
                {
         | 
| 616 | 
            +
                    if (!ContractLib.isContract(target)) {
         | 
| 617 | 
            +
                        return false;
         | 
| 618 | 
            +
                    }
         | 
| 619 | 
            +
             | 
| 620 | 
            +
                    (bool success, ) = target.staticcall(
         | 
| 621 | 
            +
                        abi.encodeWithSelector(
         | 
| 622 | 
            +
                            IAccessManagedChecker.authority.selector));
         | 
| 623 | 
            +
             | 
| 624 | 
            +
                    return success;
         | 
| 625 | 
            +
                }
         | 
| 626 | 
            +
             | 
| 627 | 
            +
             | 
| 586 628 | 
             
                function _setTargetClosed(address target, bool locked)
         | 
| 587 629 | 
             
                    internal
         | 
| 588 630 | 
             
                {
         | 
| @@ -595,4 +637,53 @@ contract AccessAdmin is | |
| 595 637 |  | 
| 596 638 | 
             
                    _authority.setTargetClosed(target, locked);
         | 
| 597 639 | 
             
                }
         | 
| 640 | 
            +
             | 
| 641 | 
            +
                function _getAccountName(address account) internal view returns (string memory) {
         | 
| 642 | 
            +
                    if (targetExists(account)) {
         | 
| 643 | 
            +
                        return _targetInfo[account].name.toString();
         | 
| 644 | 
            +
                    }
         | 
| 645 | 
            +
                    return "<unknown-account>";
         | 
| 646 | 
            +
                }
         | 
| 647 | 
            +
             | 
| 648 | 
            +
             | 
| 649 | 
            +
                function _getRoleName(RoleId roleId) internal view returns (string memory) {
         | 
| 650 | 
            +
                    if (roleExists(roleId)) {
         | 
| 651 | 
            +
                        return _roleInfo[roleId].name.toString();
         | 
| 652 | 
            +
                    }
         | 
| 653 | 
            +
                    return "<unknown-role>";
         | 
| 654 | 
            +
                }
         | 
| 655 | 
            +
             | 
| 656 | 
            +
             | 
| 657 | 
            +
                function _checkRoleExists(
         | 
| 658 | 
            +
                    RoleId roleId, 
         | 
| 659 | 
            +
                    bool onlyActiveRole
         | 
| 660 | 
            +
                )
         | 
| 661 | 
            +
                    internal
         | 
| 662 | 
            +
                    view
         | 
| 663 | 
            +
                {
         | 
| 664 | 
            +
                    if (!roleExists(roleId)) {
         | 
| 665 | 
            +
                        revert ErrorRoleUnknown(roleId);
         | 
| 666 | 
            +
                    }
         | 
| 667 | 
            +
             | 
| 668 | 
            +
                    uint64 roleIdInt = RoleId.unwrap(roleId);
         | 
| 669 | 
            +
                    if (roleIdInt == _authority.ADMIN_ROLE()) {
         | 
| 670 | 
            +
                        revert ErrorRoleIsLocked(roleId);
         | 
| 671 | 
            +
                    }
         | 
| 672 | 
            +
             | 
| 673 | 
            +
                    // check if role is disabled
         | 
| 674 | 
            +
                    if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.blockTimestamp()) {
         | 
| 675 | 
            +
                        revert ErrorRoleIsPaused(roleId);
         | 
| 676 | 
            +
                    }
         | 
| 677 | 
            +
                }
         | 
| 678 | 
            +
             | 
| 679 | 
            +
             | 
| 680 | 
            +
                /// @dev check if target exists and reverts if it doesn't
         | 
| 681 | 
            +
                function _checkTarget(address target)
         | 
| 682 | 
            +
                    internal
         | 
| 683 | 
            +
                    view
         | 
| 684 | 
            +
                {
         | 
| 685 | 
            +
                    if (!targetExists(target)) {
         | 
| 686 | 
            +
                        revert ErrorTargetUnknown(target);
         | 
| 687 | 
            +
                    }
         | 
| 688 | 
            +
                }
         | 
| 598 689 | 
             
            }
         | 
| @@ -2,15 +2,148 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
         | 
| 5 | 
            +
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 6 | 
            +
            import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
         | 
| 5 7 |  | 
| 8 | 
            +
            import {InitializableERC165} from "../shared/InitializableERC165.sol";
         | 
| 9 | 
            +
            import {RegistryLinked} from "../shared/RegistryLinked.sol";
         | 
| 10 | 
            +
            import {VersionPart, VersionLib} from "../type/Version.sol";
         | 
| 11 | 
            +
             | 
| 12 | 
            +
             | 
| 13 | 
            +
            /// @dev An AccessManager based on OpenZeppelin that is cloneable and has a central lock property.
         | 
| 14 | 
            +
            /// The lock property allows to lock all services of a release in a central place.
         | 
| 15 | 
            +
            /// Cloned by upon release preparation and instance cloning.
         | 
| 6 16 | 
             
            contract AccessManagerCloneable is
         | 
| 7 | 
            -
                AccessManagerUpgradeable
         | 
| 17 | 
            +
                AccessManagerUpgradeable,
         | 
| 18 | 
            +
                InitializableERC165,
         | 
| 19 | 
            +
                RegistryLinked
         | 
| 8 20 | 
             
            {
         | 
| 21 | 
            +
                error ErrorAccessManagerCallerNotAdmin(address caller);
         | 
| 22 | 
            +
                error ErrorAccessManagerRegistryAlreadySet(address registry);
         | 
| 23 | 
            +
                error ErrorAccessManagerInvalidRelease(VersionPart release);
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                error ErrorAccessManagerTargetAdminLocked(address target);
         | 
| 26 | 
            +
                error ErrorAccessManagerCallerAdminLocked(address caller);
         | 
| 9 27 |  | 
| 10 | 
            -
                 | 
| 28 | 
            +
                VersionPart private _release;
         | 
| 29 | 
            +
                bool private _isLocked;
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                modifier onlyAdminRole() {
         | 
| 32 | 
            +
                    (bool isMember, ) = hasRole(ADMIN_ROLE, msg.sender);
         | 
| 33 | 
            +
                    if(!isMember) {
         | 
| 34 | 
            +
                        revert ErrorAccessManagerCallerNotAdmin(msg.sender);
         | 
| 35 | 
            +
                    }
         | 
| 36 | 
            +
                    _;
         | 
| 37 | 
            +
                }
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                function initialize(address admin)
         | 
| 11 40 | 
             
                    external
         | 
| 12 41 | 
             
                    initializer()
         | 
| 13 42 | 
             
                {
         | 
| 14 | 
            -
                    __AccessManager_init( | 
| 43 | 
            +
                    __AccessManager_init(admin);
         | 
| 44 | 
            +
                    _initializeERC165();
         | 
| 45 | 
            +
                    _registerInterface(type(IAccessManager).interfaceId);
         | 
| 46 | 
            +
                }
         | 
| 47 | 
            +
             | 
| 48 | 
            +
             | 
| 49 | 
            +
                /// @dev Completes the setup of the access manager.
         | 
| 50 | 
            +
                /// Links the access manager to the registry and sets the release version.
         | 
| 51 | 
            +
                function completeSetup(
         | 
| 52 | 
            +
                    address registry, 
         | 
| 53 | 
            +
                    VersionPart release
         | 
| 54 | 
            +
                )
         | 
| 55 | 
            +
                    external
         | 
| 56 | 
            +
                    onlyAdminRole
         | 
| 57 | 
            +
                    reinitializer(uint64(release.toInt()))
         | 
| 58 | 
            +
                {
         | 
| 59 | 
            +
                    _completeSetup(registry, release, true);
         | 
| 60 | 
            +
                }
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                /// @dev Completes the setup of the access manager.
         | 
| 63 | 
            +
                /// Links the access manager to the registry and sets the release version.
         | 
| 64 | 
            +
                function completeSetup(
         | 
| 65 | 
            +
                    address registry, 
         | 
| 66 | 
            +
                    VersionPart release,
         | 
| 67 | 
            +
                    bool verifyRelease
         | 
| 68 | 
            +
                )
         | 
| 69 | 
            +
                    public
         | 
| 70 | 
            +
                    onlyAdminRole
         | 
| 71 | 
            +
                    reinitializer(uint64(release.toInt()))
         | 
| 72 | 
            +
                {
         | 
| 73 | 
            +
                    _completeSetup(registry, release, verifyRelease);
         | 
| 74 | 
            +
                }
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                /// @dev Returns true if the caller is authorized to call the target with the given selector and the manager lock is not set to locked.
         | 
| 77 | 
            +
                /// Feturn values as in OpenZeppelin AccessManager.
         | 
| 78 | 
            +
                /// For a locked manager the function reverts with ErrorAccessManagerTargetAdminLocked.
         | 
| 79 | 
            +
                function canCall(
         | 
| 80 | 
            +
                    address caller,
         | 
| 81 | 
            +
                    address target,
         | 
| 82 | 
            +
                    bytes4 selector
         | 
| 83 | 
            +
                )
         | 
| 84 | 
            +
                    public 
         | 
| 85 | 
            +
                    view 
         | 
| 86 | 
            +
                    virtual override 
         | 
| 87 | 
            +
                    returns (
         | 
| 88 | 
            +
                        bool immediate, 
         | 
| 89 | 
            +
                        uint32 delay
         | 
| 90 | 
            +
                    ) 
         | 
| 91 | 
            +
                {
         | 
| 92 | 
            +
                    (immediate, delay) = super.canCall(caller, target, selector);
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                    // locking of all contracts under control of this access manager
         | 
| 95 | 
            +
                    if (isLocked()) {
         | 
| 96 | 
            +
                        revert ErrorAccessManagerTargetAdminLocked(target);
         | 
| 97 | 
            +
                    }
         | 
| 98 | 
            +
                }
         | 
| 99 | 
            +
             | 
| 100 | 
            +
             | 
| 101 | 
            +
                /// @dev Locks/unlocks all services of this access manager.
         | 
| 102 | 
            +
                /// Only the corresponding access admin can lock/unlock the services.
         | 
| 103 | 
            +
                function setLocked(bool locked)
         | 
| 104 | 
            +
                    external
         | 
| 105 | 
            +
                    onlyAdminRole() 
         | 
| 106 | 
            +
                {
         | 
| 107 | 
            +
                    _isLocked = locked;
         | 
| 108 | 
            +
                }
         | 
| 109 | 
            +
             | 
| 110 | 
            +
             | 
| 111 | 
            +
                /// @dev Returns the release version of this access manager.
         | 
| 112 | 
            +
                /// For the registry admin release 3 is returned.
         | 
| 113 | 
            +
                /// For the release admin and the instance admin the actual release version is returned.
         | 
| 114 | 
            +
                function getRelease() external view returns (VersionPart release) {
         | 
| 115 | 
            +
                    return _release;
         | 
| 116 | 
            +
                }
         | 
| 117 | 
            +
             | 
| 118 | 
            +
             | 
| 119 | 
            +
                /// @dev Returns true iff all contracts of this access manager are locked.
         | 
| 120 | 
            +
                function isLocked()
         | 
| 121 | 
            +
                    public
         | 
| 122 | 
            +
                    view
         | 
| 123 | 
            +
                    returns (bool)
         | 
| 124 | 
            +
                {
         | 
| 125 | 
            +
                    return _isLocked;
         | 
| 126 | 
            +
                }
         | 
| 127 | 
            +
             | 
| 128 | 
            +
             | 
| 129 | 
            +
                function _completeSetup(
         | 
| 130 | 
            +
                    address registry,
         | 
| 131 | 
            +
                    VersionPart release,
         | 
| 132 | 
            +
                    bool verifyRelease
         | 
| 133 | 
            +
                )
         | 
| 134 | 
            +
                    internal
         | 
| 135 | 
            +
                {
         | 
| 136 | 
            +
                    // checks
         | 
| 137 | 
            +
                    if(address(getRegistry()) != address(0)) {
         | 
| 138 | 
            +
                        revert ErrorAccessManagerRegistryAlreadySet(address(getRegistry()) );
         | 
| 139 | 
            +
                    }
         | 
| 140 | 
            +
             | 
| 141 | 
            +
                    if (verifyRelease && !release.isValidRelease()) {
         | 
| 142 | 
            +
                        revert ErrorAccessManagerInvalidRelease(release);
         | 
| 143 | 
            +
                    }
         | 
| 144 | 
            +
             | 
| 145 | 
            +
                    // effects
         | 
| 146 | 
            +
                    __RegistryLinked_init(registry);
         | 
| 147 | 
            +
                    _release = release;
         | 
| 15 148 | 
             
                }
         | 
| 16 149 | 
             
            }
         |