@etherisc/gif-next 0.0.2-f347f00-614 → 0.0.2-f36fd21-685
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 +30 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +100 -252
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -5
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -228
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +134 -16
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +110 -81
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +84 -101
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +43 -96
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1520 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +220 -54
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +72 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +102 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -195
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -296
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +64 -51
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +32 -153
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
- 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 +50 -46
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- 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 +101 -73
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +239 -389
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +44 -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/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -86
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- 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/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
- 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/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/{shared → authorization}/AccessAdmin.sol +135 -294
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +34 -60
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +7 -4
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -14
- package/contracts/distribution/BasicDistribution.sol +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +144 -110
- package/contracts/distribution/DistributionService.sol +71 -31
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +25 -39
- package/contracts/distribution/IDistributionService.sol +17 -1
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +8 -9
- package/contracts/instance/IInstanceService.sol +13 -18
- package/contracts/instance/Instance.sol +61 -70
- package/contracts/instance/InstanceAdmin.sol +202 -267
- package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
- package/contracts/instance/InstanceReader.sol +22 -9
- package/contracts/instance/InstanceService.sol +74 -70
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +13 -5
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
- package/contracts/instance/module/IComponents.sol +0 -1
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +72 -51
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +55 -0
- package/contracts/pool/BundleService.sol +72 -27
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +14 -0
- package/contracts/pool/IPoolComponent.sol +6 -60
- package/contracts/pool/Pool.sol +160 -131
- package/contracts/pool/PoolService.sol +12 -30
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +12 -36
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +52 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +7 -32
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IPolicyService.sol +2 -0
- package/contracts/product/IProductComponent.sol +7 -9
- package/contracts/product/PolicyService.sol +28 -4
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +112 -88
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/IRegistry.sol +26 -16
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +85 -85
- package/contracts/registry/RegistryAdmin.sol +118 -86
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +13 -14
- package/contracts/shared/ComponentService.sol +102 -68
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +1 -2
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +47 -19
- package/contracts/shared/KeyValueStore.sol +6 -2
- package/contracts/shared/Lifecycle.sol +16 -69
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +2 -2
- package/contracts/shared/PolicyHolder.sol +2 -5
- package/contracts/shared/Service.sol +3 -4
- package/contracts/staking/IStaking.sol +1 -2
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/Staking.sol +20 -17
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +2 -6
- package/contracts/staking/StakingReader.sol +12 -16
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +15 -23
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/ObjectType.sol +37 -7
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RoleId.sol +55 -82
- package/contracts/type/UFixed.sol +34 -9
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +6 -3
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -166
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1554
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/registry/ReleaseManager.sol +0 -521
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
| @@ -1,12 +1,13 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: UNLICENSED
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
         | 
| 5 4 | 
             
            import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
         | 
| 6 5 | 
             
            import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
         | 
| 6 | 
            +
            import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
         | 
| 7 7 |  | 
| 8 | 
            +
            import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
         | 
| 8 9 | 
             
            import {IAccessAdmin} from "./IAccessAdmin.sol";
         | 
| 9 | 
            -
            import {RoleId, RoleIdLib} from "../type/RoleId.sol";
         | 
| 10 | 
            +
            import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
         | 
| 10 11 | 
             
            import {Selector, SelectorLib, SelectorSetLib} from "../type/Selector.sol";
         | 
| 11 12 | 
             
            import {Str, StrLib} from "../type/String.sol";
         | 
| 12 13 | 
             
            import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
         | 
| @@ -19,6 +20,7 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol"; | |
| 19 20 | 
             
             */ 
         | 
| 20 21 | 
             
            contract AccessAdmin is
         | 
| 21 22 | 
             
                AccessManagedUpgradeable,
         | 
| 23 | 
            +
                ReentrancyGuardUpgradeable,
         | 
| 22 24 | 
             
                IAccessAdmin
         | 
| 23 25 | 
             
            {
         | 
| 24 26 | 
             
                using EnumerableSet for EnumerableSet.AddressSet;
         | 
| @@ -26,19 +28,13 @@ contract AccessAdmin is | |
| 26 28 | 
             
                string public constant ADMIN_ROLE_NAME = "AdminRole";
         | 
| 27 29 | 
             
                string public constant PUBLIC_ROLE_NAME = "PublicRole";
         | 
| 28 30 |  | 
| 29 | 
            -
                uint64 public constant MANAGER_ROLE = type(uint64).min + 1;
         | 
| 30 | 
            -
                string public constant MANAGER_ROLE_NAME = "ManagerRole";
         | 
| 31 | 
            -
             | 
| 32 31 | 
             
                /// @dev the OpenZeppelin access manager driving the access admin contract
         | 
| 33 | 
            -
                 | 
| 32 | 
            +
                AccessManagerCloneable internal _authority;
         | 
| 34 33 |  | 
| 35 34 | 
             
                /// @dev stores the deployer address and allows to create initializers
         | 
| 36 35 | 
             
                /// that are restricted to the deployer address.
         | 
| 37 36 | 
             
                address internal _deployer;
         | 
| 38 37 |  | 
| 39 | 
            -
                /// @dev required role for state changes to this contract
         | 
| 40 | 
            -
                RoleId internal _managerRoleId;
         | 
| 41 | 
            -
             | 
| 42 38 | 
             
                /// @dev store role info per role id
         | 
| 43 39 | 
             
                mapping(RoleId roleId => RoleInfo info) internal _roleInfo;
         | 
| 44 40 |  | 
| @@ -63,8 +59,8 @@ contract AccessAdmin is | |
| 63 59 | 
             
                /// @dev store all managed functions per target
         | 
| 64 60 | 
             
                mapping(address target => SelectorSetLib.Set selectors) internal _targetFunctions;
         | 
| 65 61 |  | 
| 66 | 
            -
                /// @dev  | 
| 67 | 
            -
                mapping(address target => mapping(Selector selector =>  | 
| 62 | 
            +
                /// @dev function infos array
         | 
| 63 | 
            +
                mapping(address target => mapping(Selector selector => FunctionInfo)) internal _functionInfo;
         | 
| 68 64 |  | 
| 69 65 | 
             
                /// @dev temporary dynamic functions array
         | 
| 70 66 | 
             
                bytes4[] private _functions;
         | 
| @@ -87,7 +83,7 @@ contract AccessAdmin is | |
| 87 83 | 
             
                        revert ErrorRoleUnknown(roleId);
         | 
| 88 84 | 
             
                    }
         | 
| 89 85 |  | 
| 90 | 
            -
                    if (! | 
| 86 | 
            +
                    if (!hasAdminRole(msg.sender, roleId)) {
         | 
| 91 87 | 
             
                        revert ErrorNotAdminOfRole(_roleInfo[roleId].adminRoleId);
         | 
| 92 88 | 
             
                    }
         | 
| 93 89 | 
             
                    _;
         | 
| @@ -112,148 +108,15 @@ contract AccessAdmin is | |
| 112 108 |  | 
| 113 109 | 
             
                constructor() {
         | 
| 114 110 | 
             
                    _deployer = msg.sender;
         | 
| 115 | 
            -
                    _authority = new  | 
| 116 | 
            -
             | 
| 117 | 
            -
                    _setAuthority(address(_authority));
         | 
| 118 | 
            -
                    _createInitialRoleSetup();
         | 
| 111 | 
            +
                    _authority = new AccessManagerCloneable();
         | 
| 112 | 
            +
                    _authority.initialize(address(this));
         | 
| 119 113 |  | 
| 114 | 
            +
                    _setAuthority(address(_authority)); // set authority for oz access managed
         | 
| 115 | 
            +
                    _createAdminAndPublicRoles();
         | 
| 120 116 | 
             
                    _disableInitializers();
         | 
| 121 117 | 
             
                }
         | 
| 122 118 |  | 
| 123 | 
            -
                //---  | 
| 124 | 
            -
             | 
| 125 | 
            -
                function createRole(
         | 
| 126 | 
            -
                    RoleId roleId, 
         | 
| 127 | 
            -
                    RoleId adminRoleId, 
         | 
| 128 | 
            -
                    string memory name,
         | 
| 129 | 
            -
                    uint256 maxMemberCount,
         | 
| 130 | 
            -
                    bool memberRemovalDisabled
         | 
| 131 | 
            -
                )
         | 
| 132 | 
            -
                    external
         | 
| 133 | 
            -
                    restricted()
         | 
| 134 | 
            -
                {
         | 
| 135 | 
            -
                    _createRole(roleId, adminRoleId, name, maxMemberCount, memberRemovalDisabled);
         | 
| 136 | 
            -
                }
         | 
| 137 | 
            -
             | 
| 138 | 
            -
                function setRoleDisabled(
         | 
| 139 | 
            -
                    RoleId roleId, 
         | 
| 140 | 
            -
                    bool disabled
         | 
| 141 | 
            -
                )
         | 
| 142 | 
            -
                    external
         | 
| 143 | 
            -
                    restricted()
         | 
| 144 | 
            -
                {
         | 
| 145 | 
            -
                    _setRoleDisabled(roleId, disabled);
         | 
| 146 | 
            -
                }
         | 
| 147 | 
            -
             | 
| 148 | 
            -
                function grantRole(
         | 
| 149 | 
            -
                    address account, 
         | 
| 150 | 
            -
                    RoleId roleId
         | 
| 151 | 
            -
                )
         | 
| 152 | 
            -
                    external
         | 
| 153 | 
            -
                    onlyRoleAdmin(roleId)
         | 
| 154 | 
            -
                    restricted()
         | 
| 155 | 
            -
                {
         | 
| 156 | 
            -
                    _grantRoleToAccount(roleId, account);
         | 
| 157 | 
            -
                }
         | 
| 158 | 
            -
             | 
| 159 | 
            -
                function revokeRole(
         | 
| 160 | 
            -
                    address account, 
         | 
| 161 | 
            -
                    RoleId roleId
         | 
| 162 | 
            -
                )
         | 
| 163 | 
            -
                    external
         | 
| 164 | 
            -
                    onlyRoleAdmin(roleId)
         | 
| 165 | 
            -
                    restricted()
         | 
| 166 | 
            -
                {
         | 
| 167 | 
            -
                    _revokeRoleFromAccount(roleId, account);
         | 
| 168 | 
            -
                }
         | 
| 169 | 
            -
             | 
| 170 | 
            -
                function renounceRole(
         | 
| 171 | 
            -
                    RoleId roleId
         | 
| 172 | 
            -
                )
         | 
| 173 | 
            -
                    external
         | 
| 174 | 
            -
                    onlyRoleMember(roleId)
         | 
| 175 | 
            -
                    restricted()
         | 
| 176 | 
            -
                {
         | 
| 177 | 
            -
                    _revokeRoleFromAccount(roleId, msg.sender);
         | 
| 178 | 
            -
                }
         | 
| 179 | 
            -
             | 
| 180 | 
            -
                //--- target management functions ---------------------------------------//
         | 
| 181 | 
            -
             | 
| 182 | 
            -
                function createTarget(
         | 
| 183 | 
            -
                    address target, 
         | 
| 184 | 
            -
                    string memory name
         | 
| 185 | 
            -
                )
         | 
| 186 | 
            -
                    external
         | 
| 187 | 
            -
                    restricted()
         | 
| 188 | 
            -
                {
         | 
| 189 | 
            -
                    _createTarget(target, name);
         | 
| 190 | 
            -
                }
         | 
| 191 | 
            -
             | 
| 192 | 
            -
                function setTargetLocked(
         | 
| 193 | 
            -
                    address target, 
         | 
| 194 | 
            -
                    bool locked
         | 
| 195 | 
            -
                )
         | 
| 196 | 
            -
                    external
         | 
| 197 | 
            -
                    onlyExistingTarget(target)
         | 
| 198 | 
            -
                    restricted()
         | 
| 199 | 
            -
                {
         | 
| 200 | 
            -
                    _authority.setTargetClosed(target, locked);
         | 
| 201 | 
            -
             | 
| 202 | 
            -
                    // implizit logging: rely on OpenZeppelin log TargetClosed
         | 
| 203 | 
            -
                }
         | 
| 204 | 
            -
             | 
| 205 | 
            -
                function authorizeFunctions(
         | 
| 206 | 
            -
                    address target, 
         | 
| 207 | 
            -
                    RoleId roleId, 
         | 
| 208 | 
            -
                    Function[] memory functions
         | 
| 209 | 
            -
                )
         | 
| 210 | 
            -
                    external
         | 
| 211 | 
            -
                    onlyExistingTarget(target)
         | 
| 212 | 
            -
                    onlyExistingRole(roleId)
         | 
| 213 | 
            -
                    restricted()
         | 
| 214 | 
            -
                {
         | 
| 215 | 
            -
                    _authorizeTargetFunctions(target, roleId, functions);
         | 
| 216 | 
            -
                }
         | 
| 217 | 
            -
             | 
| 218 | 
            -
                function unauthorizeFunctions(
         | 
| 219 | 
            -
                    address target, 
         | 
| 220 | 
            -
                    Function[] memory functions
         | 
| 221 | 
            -
                )
         | 
| 222 | 
            -
                    external
         | 
| 223 | 
            -
                    restricted()
         | 
| 224 | 
            -
                {
         | 
| 225 | 
            -
                    _unauthorizeTargetFunctions(target, functions);
         | 
| 226 | 
            -
                }
         | 
| 227 | 
            -
             | 
| 228 | 
            -
             | 
| 229 | 
            -
                function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
         | 
| 230 | 
            -
                    return SelectorSetLib.size(_targetFunctions[target]);
         | 
| 231 | 
            -
                }
         | 
| 232 | 
            -
             | 
| 233 | 
            -
                function getAuthorizedFunction(
         | 
| 234 | 
            -
                    address target, 
         | 
| 235 | 
            -
                    uint256 idx
         | 
| 236 | 
            -
                )
         | 
| 237 | 
            -
                    external 
         | 
| 238 | 
            -
                    view 
         | 
| 239 | 
            -
                    returns (
         | 
| 240 | 
            -
                        Function memory func, 
         | 
| 241 | 
            -
                        RoleId roleId
         | 
| 242 | 
            -
                    )
         | 
| 243 | 
            -
                {
         | 
| 244 | 
            -
                    Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
         | 
| 245 | 
            -
             | 
| 246 | 
            -
                    func = Function({
         | 
| 247 | 
            -
                        selector: selector, 
         | 
| 248 | 
            -
                        name: _functionName[target][selector]});
         | 
| 249 | 
            -
             | 
| 250 | 
            -
                    roleId = RoleIdLib.toRoleId(
         | 
| 251 | 
            -
                        _authority.getTargetFunctionRole(
         | 
| 252 | 
            -
                            target, 
         | 
| 253 | 
            -
                            selector.toBytes4()));
         | 
| 254 | 
            -
                }
         | 
| 255 | 
            -
             | 
| 256 | 
            -
                //--- view functions ----------------------------------------------------//
         | 
| 119 | 
            +
                //--- view functions for roles ------------------------------------------//
         | 
| 257 120 |  | 
| 258 121 | 
             
                function roles() external view returns (uint256 numberOfRoles) {
         | 
| 259 122 | 
             
                    return _roleIds.length;
         | 
| @@ -271,16 +134,8 @@ contract AccessAdmin is | |
| 271 134 | 
             
                    return RoleId.wrap(_authority.PUBLIC_ROLE());
         | 
| 272 135 | 
             
                }
         | 
| 273 136 |  | 
| 274 | 
            -
                function getManagerRole() public view returns (RoleId roleId) {
         | 
| 275 | 
            -
                    return _managerRoleId;
         | 
| 276 | 
            -
                }
         | 
| 277 | 
            -
             | 
| 278 137 | 
             
                function roleExists(RoleId roleId) public view returns (bool exists) {
         | 
| 279 | 
            -
                    return _roleInfo[roleId]. | 
| 280 | 
            -
                }
         | 
| 281 | 
            -
             | 
| 282 | 
            -
                function isRoleDisabled(RoleId roleId) public view returns (bool isActive) {
         | 
| 283 | 
            -
                    return _roleInfo[roleId].disabledAt <= TimestampLib.blockTimestamp();
         | 
| 138 | 
            +
                    return _roleInfo[roleId].createdAt.gtz();
         | 
| 284 139 | 
             
                }
         | 
| 285 140 |  | 
| 286 141 | 
             
                function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory) {
         | 
| @@ -291,6 +146,14 @@ contract AccessAdmin is | |
| 291 146 | 
             
                    return _roleForName[name];
         | 
| 292 147 | 
             
                }
         | 
| 293 148 |  | 
| 149 | 
            +
                function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
         | 
| 150 | 
            +
                    return _roleMembers[roleId].length();
         | 
| 151 | 
            +
                }
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                function getRoleMember(RoleId roleId, uint256 idx) external view returns (address account) {
         | 
| 154 | 
            +
                    return _roleMembers[roleId].at(idx);
         | 
| 155 | 
            +
                }
         | 
| 156 | 
            +
             | 
| 294 157 | 
             
                function hasRole(address account, RoleId roleId) public view returns (bool) {
         | 
| 295 158 | 
             
                    (bool isMember, ) = _authority.hasRole(
         | 
| 296 159 | 
             
                        RoleId.unwrap(roleId), 
         | 
| @@ -298,22 +161,21 @@ contract AccessAdmin is | |
| 298 161 | 
             
                    return isMember;
         | 
| 299 162 | 
             
                }
         | 
| 300 163 |  | 
| 301 | 
            -
                function  | 
| 302 | 
            -
                     | 
| 164 | 
            +
                function hasAdminRole(address account, RoleId roleId)
         | 
| 165 | 
            +
                    public 
         | 
| 166 | 
            +
                    virtual
         | 
| 167 | 
            +
                    view 
         | 
| 168 | 
            +
                    returns (bool)
         | 
| 169 | 
            +
                {
         | 
| 170 | 
            +
                    return hasRole(account, _roleInfo[roleId].adminRoleId);
         | 
| 303 171 | 
             
                }
         | 
| 304 172 |  | 
| 305 | 
            -
                 | 
| 306 | 
            -
                    return _roleMembers[roleId].at(idx);
         | 
| 307 | 
            -
                }
         | 
| 173 | 
            +
                //--- view functions for targets ----------------------------------------//
         | 
| 308 174 |  | 
| 309 175 | 
             
                function targetExists(address target) public view returns (bool exists) {
         | 
| 310 176 | 
             
                    return _targetInfo[target].createdAt.gtz();
         | 
| 311 177 | 
             
                }
         | 
| 312 178 |  | 
| 313 | 
            -
                function isTargetLocked(address target) public view returns (bool locked) {
         | 
| 314 | 
            -
                    return _authority.isTargetClosed(target);
         | 
| 315 | 
            -
                }
         | 
| 316 | 
            -
             | 
| 317 179 | 
             
                function targets() external view returns (uint256 numberOfTargets) {
         | 
| 318 180 | 
             
                    return _targets.length;
         | 
| 319 181 | 
             
                }
         | 
| @@ -326,10 +188,37 @@ contract AccessAdmin is | |
| 326 188 | 
             
                    return _targetInfo[target];
         | 
| 327 189 | 
             
                }
         | 
| 328 190 |  | 
| 329 | 
            -
                function getTargetForName(Str name)  | 
| 191 | 
            +
                function getTargetForName(Str name) public view returns (address target) {
         | 
| 330 192 | 
             
                    return _targetForName[name];
         | 
| 331 193 | 
             
                }
         | 
| 332 194 |  | 
| 195 | 
            +
                function isTargetLocked(address target) public view returns (bool locked) {
         | 
| 196 | 
            +
                    return _authority.isTargetClosed(target);
         | 
| 197 | 
            +
                }
         | 
| 198 | 
            +
             | 
| 199 | 
            +
                function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
         | 
| 200 | 
            +
                    return SelectorSetLib.size(_targetFunctions[target]);
         | 
| 201 | 
            +
                }
         | 
| 202 | 
            +
             | 
| 203 | 
            +
                function getAuthorizedFunction(
         | 
| 204 | 
            +
                    address target, 
         | 
| 205 | 
            +
                    uint256 idx
         | 
| 206 | 
            +
                )
         | 
| 207 | 
            +
                    external 
         | 
| 208 | 
            +
                    view 
         | 
| 209 | 
            +
                    returns (
         | 
| 210 | 
            +
                        FunctionInfo memory func, 
         | 
| 211 | 
            +
                        RoleId roleId
         | 
| 212 | 
            +
                    )
         | 
| 213 | 
            +
                {
         | 
| 214 | 
            +
                    Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
         | 
| 215 | 
            +
                    func = _functionInfo[target][selector];
         | 
| 216 | 
            +
                    roleId = RoleIdLib.toRoleId(
         | 
| 217 | 
            +
                        _authority.getTargetFunctionRole(
         | 
| 218 | 
            +
                            target, 
         | 
| 219 | 
            +
                            selector.toBytes4()));
         | 
| 220 | 
            +
                }
         | 
| 221 | 
            +
             | 
| 333 222 | 
             
                function isAccessManaged(address target) public view returns (bool) {
         | 
| 334 223 | 
             
                    if (!_isContract(target)) {
         | 
| 335 224 | 
             
                        return false;
         | 
| @@ -342,18 +231,29 @@ contract AccessAdmin is | |
| 342 231 | 
             
                    return success;
         | 
| 343 232 | 
             
                }
         | 
| 344 233 |  | 
| 345 | 
            -
                function canCall(address caller, address target, Selector selector) external view returns (bool can) {
         | 
| 234 | 
            +
                function canCall(address caller, address target, Selector selector) external virtual view returns (bool can) {
         | 
| 346 235 | 
             
                    (can, ) = _authority.canCall(caller, target, selector.toBytes4());
         | 
| 347 236 | 
             
                }
         | 
| 348 237 |  | 
| 349 | 
            -
                function  | 
| 350 | 
            -
                    return  | 
| 238 | 
            +
                function toRole(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) public view returns (RoleInfo memory) {
         | 
| 239 | 
            +
                    return RoleInfo({
         | 
| 240 | 
            +
                        name: StrLib.toStr(name),
         | 
| 241 | 
            +
                        adminRoleId: adminRoleId,
         | 
| 242 | 
            +
                        roleType: roleType,
         | 
| 243 | 
            +
                        maxMemberCount: maxMemberCount,
         | 
| 244 | 
            +
                        createdAt: TimestampLib.blockTimestamp()
         | 
| 245 | 
            +
                    });
         | 
| 351 246 | 
             
                }
         | 
| 352 247 |  | 
| 353 | 
            -
                function toFunction(bytes4 selector, string memory name) public  | 
| 354 | 
            -
             | 
| 355 | 
            -
             | 
| 356 | 
            -
             | 
| 248 | 
            +
                function toFunction(bytes4 selector, string memory name) public view returns (FunctionInfo memory) {
         | 
| 249 | 
            +
                    return FunctionInfo({
         | 
| 250 | 
            +
                        name: StrLib.toStr(name),
         | 
| 251 | 
            +
                        selector: SelectorLib.toSelector(selector),
         | 
| 252 | 
            +
                        createdAt: TimestampLib.blockTimestamp()});
         | 
| 253 | 
            +
                }
         | 
| 254 | 
            +
             | 
| 255 | 
            +
                function deployer() public view returns (address) {
         | 
| 256 | 
            +
                    return _deployer;
         | 
| 357 257 | 
             
                }
         | 
| 358 258 |  | 
| 359 259 | 
             
                //--- internal/private functions -------------------------------------------------//
         | 
| @@ -361,7 +261,7 @@ contract AccessAdmin is | |
| 361 261 | 
             
                function _authorizeTargetFunctions(
         | 
| 362 262 | 
             
                    address target, 
         | 
| 363 263 | 
             
                    RoleId roleId, 
         | 
| 364 | 
            -
                     | 
| 264 | 
            +
                    FunctionInfo[] memory functions
         | 
| 365 265 | 
             
                )
         | 
| 366 266 | 
             
                    internal
         | 
| 367 267 | 
             
                {
         | 
| @@ -378,7 +278,7 @@ contract AccessAdmin is | |
| 378 278 |  | 
| 379 279 | 
             
                function _unauthorizeTargetFunctions(
         | 
| 380 280 | 
             
                    address target, 
         | 
| 381 | 
            -
                     | 
| 281 | 
            +
                    FunctionInfo[] memory functions
         | 
| 382 282 | 
             
                )
         | 
| 383 283 | 
             
                    internal
         | 
| 384 284 | 
             
                {
         | 
| @@ -389,7 +289,7 @@ contract AccessAdmin is | |
| 389 289 |  | 
| 390 290 | 
             
                function _processFunctionSelectors(
         | 
| 391 291 | 
             
                    address target,
         | 
| 392 | 
            -
                     | 
| 292 | 
            +
                    FunctionInfo[] memory functions,
         | 
| 393 293 | 
             
                    bool addFunctions
         | 
| 394 294 | 
             
                )
         | 
| 395 295 | 
             
                    internal
         | 
| @@ -399,7 +299,7 @@ contract AccessAdmin is | |
| 399 299 | 
             
                {
         | 
| 400 300 | 
             
                    uint256 n = functions.length;
         | 
| 401 301 | 
             
                    functionSelectors = new bytes4[](n);
         | 
| 402 | 
            -
                     | 
| 302 | 
            +
                    FunctionInfo memory func;
         | 
| 403 303 | 
             
                    Selector selector;
         | 
| 404 304 |  | 
| 405 305 | 
             
                    for (uint256 i = 0; i < n; i++) {
         | 
| @@ -411,7 +311,7 @@ contract AccessAdmin is | |
| 411 311 | 
             
                        else { SelectorSetLib.remove(_targetFunctions[target], selector); }
         | 
| 412 312 |  | 
| 413 313 | 
             
                        // set function name
         | 
| 414 | 
            -
                         | 
| 314 | 
            +
                        _functionInfo[target][selector] = func;
         | 
| 415 315 |  | 
| 416 316 | 
             
                        // add bytes4 selector to function selector array
         | 
| 417 317 | 
             
                        functionSelectors[i] = selector.toBytes4();
         | 
| @@ -430,75 +330,47 @@ contract AccessAdmin is | |
| 430 330 | 
             
                        revert ErrorAuthorityAlreadySet();
         | 
| 431 331 | 
             
                    }
         | 
| 432 332 |  | 
| 433 | 
            -
                    _authority =  | 
| 434 | 
            -
             | 
| 435 | 
            -
                    if(!hasRole(address(this), RoleId.wrap(_authority.ADMIN_ROLE()))) {
         | 
| 436 | 
            -
                        revert ErrorAdminRoleMissing();
         | 
| 437 | 
            -
                    }
         | 
| 438 | 
            -
             | 
| 333 | 
            +
                    _authority = AccessManagerCloneable(authorityAddress);
         | 
| 439 334 | 
             
                    __AccessManaged_init(address(_authority));
         | 
| 440 335 | 
             
                }
         | 
| 441 336 |  | 
| 442 337 |  | 
| 443 | 
            -
                function  | 
| 338 | 
            +
                function _initializeAdminAndPublicRoles()
         | 
| 444 339 | 
             
                    internal
         | 
| 445 340 | 
             
                    virtual
         | 
| 446 341 | 
             
                    onlyInitializing()
         | 
| 447 342 | 
             
                {
         | 
| 448 | 
            -
                     | 
| 343 | 
            +
                    _createAdminAndPublicRoles();
         | 
| 449 344 | 
             
                }
         | 
| 450 345 |  | 
| 451 346 |  | 
| 452 | 
            -
                function  | 
| 347 | 
            +
                /// @dev internal setup function that can be used in both constructor and initializer.
         | 
| 348 | 
            +
                function _createAdminAndPublicRoles()
         | 
| 453 349 | 
             
                    internal
         | 
| 454 350 | 
             
                {
         | 
| 455 351 | 
             
                    RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
         | 
| 456 | 
            -
                     | 
| 352 | 
            +
                    FunctionInfo[] memory functions;
         | 
| 457 353 |  | 
| 458 354 | 
             
                    // setup admin role
         | 
| 459 355 | 
             
                    _createRoleUnchecked(
         | 
| 460 | 
            -
                         | 
| 461 | 
            -
                         | 
| 462 | 
            -
             | 
| 463 | 
            -
             | 
| 464 | 
            -
             | 
| 356 | 
            +
                        ADMIN_ROLE(),
         | 
| 357 | 
            +
                        toRole({
         | 
| 358 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 359 | 
            +
                            roleType: RoleType.Contract,
         | 
| 360 | 
            +
                            maxMemberCount: 1,
         | 
| 361 | 
            +
                            name: ADMIN_ROLE_NAME}));
         | 
| 465 362 |  | 
| 466 363 | 
             
                    // add this contract as admin role member
         | 
| 467 364 | 
             
                    _roleMembers[adminRoleId].add(address(this));
         | 
| 468 365 |  | 
| 469 366 | 
             
                    // setup public role
         | 
| 470 367 | 
             
                    _createRoleUnchecked(
         | 
| 471 | 
            -
                         | 
| 472 | 
            -
                         | 
| 473 | 
            -
             | 
| 474 | 
            -
             | 
| 475 | 
            -
             | 
| 476 | 
            -
             | 
| 477 | 
            -
                    // setup manager role
         | 
| 478 | 
            -
                    _managerRoleId = RoleIdLib.toRoleId(MANAGER_ROLE);
         | 
| 479 | 
            -
                    _createRole(
         | 
| 480 | 
            -
                        _managerRoleId, 
         | 
| 481 | 
            -
                        adminRoleId,
         | 
| 482 | 
            -
                        MANAGER_ROLE_NAME,
         | 
| 483 | 
            -
                        3, // TODO think about max member count
         | 
| 484 | 
            -
                        false);
         | 
| 485 | 
            -
             | 
| 486 | 
            -
                    // grant public role access to grant and revoke, renounce
         | 
| 487 | 
            -
                    functions = new Function[](3);
         | 
| 488 | 
            -
                    functions[0] = toFunction(IAccessAdmin.grantRole.selector, "grantRole");
         | 
| 489 | 
            -
                    functions[1] = toFunction(IAccessAdmin.revokeRole.selector, "revokeRole");
         | 
| 490 | 
            -
                    functions[2] = toFunction(IAccessAdmin.renounceRole.selector, "renounceRole");
         | 
| 491 | 
            -
                    _authorizeTargetFunctions(address(this), getPublicRole(), functions);
         | 
| 492 | 
            -
             | 
| 493 | 
            -
                    // grant manager role access to the specified functions 
         | 
| 494 | 
            -
                    functions = new Function[](6);
         | 
| 495 | 
            -
                    functions[0] = toFunction(IAccessAdmin.createRole.selector, "createRole");
         | 
| 496 | 
            -
                    functions[1] = toFunction(IAccessAdmin.setRoleDisabled.selector, "setRoleDisabled");
         | 
| 497 | 
            -
                    functions[2] = toFunction(IAccessAdmin.createTarget.selector, "createTarget");
         | 
| 498 | 
            -
                    functions[3] = toFunction(IAccessAdmin.setTargetLocked.selector, "setTargetLocked");
         | 
| 499 | 
            -
                    functions[4] = toFunction(IAccessAdmin.authorizeFunctions.selector, "authorizeFunctions");
         | 
| 500 | 
            -
                    functions[5] = toFunction(IAccessAdmin.unauthorizeFunctions.selector, "unauthorizeFunctions");
         | 
| 501 | 
            -
                    _authorizeTargetFunctions(address(this), getManagerRole(), functions);
         | 
| 368 | 
            +
                        PUBLIC_ROLE(),
         | 
| 369 | 
            +
                        toRole({
         | 
| 370 | 
            +
                            adminRoleId: ADMIN_ROLE(),
         | 
| 371 | 
            +
                            roleType: RoleType.Gif,
         | 
| 372 | 
            +
                            maxMemberCount: type(uint32).max,
         | 
| 373 | 
            +
                            name: PUBLIC_ROLE_NAME}));
         | 
| 502 374 | 
             
                }
         | 
| 503 375 |  | 
| 504 376 | 
             
                /// @dev check if target exists and reverts if it doesn't
         | 
| @@ -531,13 +403,17 @@ contract AccessAdmin is | |
| 531 403 | 
             
                    internal
         | 
| 532 404 | 
             
                {
         | 
| 533 405 | 
             
                    _checkRoleId(roleId);
         | 
| 534 | 
            -
                    _checkRoleIsActive(roleId);
         | 
| 535 406 |  | 
| 536 407 | 
             
                    // check max role members will not be exceeded
         | 
| 537 408 | 
             
                    if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
         | 
| 538 409 | 
             
                        revert ErrorRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
         | 
| 539 410 | 
             
                    }
         | 
| 540 411 |  | 
| 412 | 
            +
                    // check account is contract for contract role
         | 
| 413 | 
            +
                    // TODO implement
         | 
| 414 | 
            +
                    if (_roleInfo[roleId].roleType == RoleType.Contract) {
         | 
| 415 | 
            +
                    }
         | 
| 416 | 
            +
             | 
| 541 417 | 
             
                    _roleMembers[roleId].add(account);
         | 
| 542 418 | 
             
                    _authority.grantRole(
         | 
| 543 419 | 
             
                        RoleId.unwrap(roleId), 
         | 
| @@ -554,7 +430,7 @@ contract AccessAdmin is | |
| 554 430 | 
             
                    _checkRoleId(roleId);
         | 
| 555 431 |  | 
| 556 432 | 
             
                    // check role removal is permitted
         | 
| 557 | 
            -
                    if (_roleInfo[roleId]. | 
| 433 | 
            +
                    if (_roleInfo[roleId].roleType == RoleType.Contract) {
         | 
| 558 434 | 
             
                        revert ErrorRoleRemovalDisabled(roleId);
         | 
| 559 435 | 
             
                    }
         | 
| 560 436 |  | 
| @@ -570,7 +446,7 @@ contract AccessAdmin is | |
| 570 446 | 
             
                function _checkRoleId(RoleId roleId)
         | 
| 571 447 | 
             
                    internal
         | 
| 572 448 | 
             
                {
         | 
| 573 | 
            -
                    if ( | 
| 449 | 
            +
                    if (_roleInfo[roleId].createdAt.eqz()) {
         | 
| 574 450 | 
             
                        revert ErrorRoleUnknown(roleId);
         | 
| 575 451 | 
             
                    }
         | 
| 576 452 |  | 
| @@ -582,22 +458,11 @@ contract AccessAdmin is | |
| 582 458 | 
             
                    }
         | 
| 583 459 | 
             
                }
         | 
| 584 460 |  | 
| 585 | 
            -
             | 
| 586 | 
            -
                 | 
| 587 | 
            -
                    internal
         | 
| 588 | 
            -
                {
         | 
| 589 | 
            -
                    if (isRoleDisabled(roleId)) {
         | 
| 590 | 
            -
                        revert ErrorRoleIsDisabled(roleId);
         | 
| 591 | 
            -
                    }
         | 
| 592 | 
            -
                }
         | 
| 593 | 
            -
             | 
| 594 | 
            -
             | 
| 461 | 
            +
                /// @dev Creates a role based on the provided parameters.
         | 
| 462 | 
            +
                /// Checks that the provided role and role id and role name not already used.
         | 
| 595 463 | 
             
                function _createRole(
         | 
| 596 464 | 
             
                    RoleId roleId, 
         | 
| 597 | 
            -
                     | 
| 598 | 
            -
                    string memory roleName,
         | 
| 599 | 
            -
                    uint256 maxMemberCount,
         | 
| 600 | 
            -
                    bool memberRemovalDisabled
         | 
| 465 | 
            +
                    RoleInfo memory info
         | 
| 601 466 | 
             
                )
         | 
| 602 467 | 
             
                    internal
         | 
| 603 468 | 
             
                {
         | 
| @@ -609,84 +474,57 @@ contract AccessAdmin is | |
| 609 474 | 
             
                    }
         | 
| 610 475 |  | 
| 611 476 | 
             
                    // check admin role exists
         | 
| 612 | 
            -
                    if(!roleExists(adminRoleId)) {
         | 
| 613 | 
            -
                        revert ErrorRoleAdminNotExisting(adminRoleId);
         | 
| 477 | 
            +
                    if(!roleExists(info.adminRoleId)) {
         | 
| 478 | 
            +
                        revert ErrorRoleAdminNotExisting(info.adminRoleId);
         | 
| 614 479 | 
             
                    }
         | 
| 615 480 |  | 
| 616 481 | 
             
                    // check role name is not empty
         | 
| 617 | 
            -
                     | 
| 618 | 
            -
                    if(name.length() == 0) {
         | 
| 482 | 
            +
                    if(info.name.length() == 0) {
         | 
| 619 483 | 
             
                        revert ErrorRoleNameEmpty(roleId);
         | 
| 620 484 | 
             
                    }
         | 
| 621 485 |  | 
| 622 486 | 
             
                    // check role name is not used for another role
         | 
| 623 | 
            -
                    if(_roleForName[name].exists) {
         | 
| 487 | 
            +
                    if(_roleForName[info.name].exists) {
         | 
| 624 488 | 
             
                        revert ErrorRoleNameAlreadyExists(
         | 
| 625 489 | 
             
                            roleId, 
         | 
| 626 | 
            -
                             | 
| 627 | 
            -
                            _roleForName[name].roleId);
         | 
| 628 | 
            -
                    }
         | 
| 629 | 
            -
             | 
| 630 | 
            -
                    _createRoleUnchecked(
         | 
| 631 | 
            -
                        roleId, adminRoleId, 
         | 
| 632 | 
            -
                        name, 
         | 
| 633 | 
            -
                        maxMemberCount, 
         | 
| 634 | 
            -
                        memberRemovalDisabled);
         | 
| 635 | 
            -
                }
         | 
| 636 | 
            -
             | 
| 637 | 
            -
             | 
| 638 | 
            -
                function _setRoleDisabled(
         | 
| 639 | 
            -
                    RoleId roleId, 
         | 
| 640 | 
            -
                    bool disabled
         | 
| 641 | 
            -
                )
         | 
| 642 | 
            -
                    internal
         | 
| 643 | 
            -
                {
         | 
| 644 | 
            -
             | 
| 645 | 
            -
                    _checkRoleId(roleId);
         | 
| 646 | 
            -
                    Timestamp disabledAtOld = _roleInfo[roleId].disabledAt;
         | 
| 647 | 
            -
             | 
| 648 | 
            -
                    if (disabled) {
         | 
| 649 | 
            -
                        _roleInfo[roleId].disabledAt = TimestampLib.blockTimestamp();
         | 
| 650 | 
            -
                    } else {
         | 
| 651 | 
            -
                        _roleInfo[roleId].disabledAt = TimestampLib.max();
         | 
| 490 | 
            +
                            info.name.toString(),
         | 
| 491 | 
            +
                            _roleForName[info.name].roleId);
         | 
| 652 492 | 
             
                    }
         | 
| 653 493 |  | 
| 654 | 
            -
                     | 
| 494 | 
            +
                    _createRoleUnchecked(roleId, info);
         | 
| 655 495 | 
             
                }
         | 
| 656 496 |  | 
| 657 497 |  | 
| 658 498 | 
             
                function _createRoleUnchecked(
         | 
| 659 499 | 
             
                    RoleId roleId, 
         | 
| 660 | 
            -
                     | 
| 661 | 
            -
                    Str name,
         | 
| 662 | 
            -
                    uint256 maxMemberCount,
         | 
| 663 | 
            -
                    bool memberRemovalDisabled
         | 
| 500 | 
            +
                    RoleInfo memory info
         | 
| 664 501 | 
             
                )
         | 
| 665 502 | 
             
                    private
         | 
| 666 503 | 
             
                {
         | 
| 667 504 | 
             
                    // create role info
         | 
| 668 | 
            -
                     | 
| 669 | 
            -
             | 
| 670 | 
            -
                        name: name,
         | 
| 671 | 
            -
                        maxMemberCount: maxMemberCount,
         | 
| 672 | 
            -
                        memberRemovalDisabled: memberRemovalDisabled,
         | 
| 673 | 
            -
                        disabledAt: TimestampLib.max(),
         | 
| 674 | 
            -
                        exists: true});
         | 
| 505 | 
            +
                    info.createdAt = TimestampLib.blockTimestamp();
         | 
| 506 | 
            +
                    _roleInfo[roleId] = info;
         | 
| 675 507 |  | 
| 676 508 | 
             
                    // create role name info
         | 
| 677 | 
            -
                    _roleForName[name] = RoleNameInfo({
         | 
| 509 | 
            +
                    _roleForName[info.name] = RoleNameInfo({
         | 
| 678 510 | 
             
                        roleId: roleId,
         | 
| 679 511 | 
             
                        exists: true});
         | 
| 680 512 |  | 
| 681 513 | 
             
                    // add role to list of roles
         | 
| 682 514 | 
             
                    _roleIds.push(roleId);
         | 
| 683 515 |  | 
| 684 | 
            -
                    emit LogRoleCreated(roleId, adminRoleId, name.toString());
         | 
| 516 | 
            +
                    emit LogRoleCreated(roleId, info.roleType, info.adminRoleId, info.name.toString());
         | 
| 685 517 | 
             
                }
         | 
| 686 518 |  | 
| 687 519 |  | 
| 688 | 
            -
                function _createTarget( | 
| 520 | 
            +
                function _createTarget(
         | 
| 521 | 
            +
                    address target, 
         | 
| 522 | 
            +
                    string memory targetName, 
         | 
| 523 | 
            +
                    bool checkAuthority,
         | 
| 524 | 
            +
                    bool custom
         | 
| 525 | 
            +
                )
         | 
| 689 526 | 
             
                    internal
         | 
| 527 | 
            +
                    nonReentrant()
         | 
| 690 528 | 
             
                {
         | 
| 691 529 | 
             
                    // check target does not yet exist
         | 
| 692 530 | 
             
                    if(targetExists(target)) {
         | 
| @@ -701,7 +539,7 @@ contract AccessAdmin is | |
| 701 539 | 
             
                        revert ErrorTargetNameEmpty(target);
         | 
| 702 540 | 
             
                    }
         | 
| 703 541 |  | 
| 704 | 
            -
                    // check target name is not used for another  | 
| 542 | 
            +
                    // check target name is not used for another target
         | 
| 705 543 | 
             
                    if( _targetForName[name] != address(0)) {
         | 
| 706 544 | 
             
                        revert ErrorTargetNameAlreadyExists(
         | 
| 707 545 | 
             
                            target, 
         | 
| @@ -715,14 +553,17 @@ contract AccessAdmin is | |
| 715 553 | 
             
                    }
         | 
| 716 554 |  | 
| 717 555 | 
             
                    // check target shares authority with this contract
         | 
| 718 | 
            -
                     | 
| 719 | 
            -
             | 
| 720 | 
            -
                         | 
| 556 | 
            +
                    if (checkAuthority) {
         | 
| 557 | 
            +
                        address targetAuthority = AccessManagedUpgradeable(target).authority();
         | 
| 558 | 
            +
                        if (targetAuthority != authority()) {
         | 
| 559 | 
            +
                            revert ErrorTargetAuthorityMismatch(authority(), targetAuthority);
         | 
| 560 | 
            +
                        }
         | 
| 721 561 | 
             
                    }
         | 
| 722 562 |  | 
| 723 563 | 
             
                    // create target info
         | 
| 724 564 | 
             
                    _targetInfo[target] = TargetInfo({
         | 
| 725 565 | 
             
                        name: name,
         | 
| 566 | 
            +
                        isCustom: custom,
         | 
| 726 567 | 
             
                        createdAt: TimestampLib.blockTimestamp()
         | 
| 727 568 | 
             
                    });
         | 
| 728 569 |  | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: UNLICENSED
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            contract AccessManagerCloneable is
         | 
| 7 | 
            +
                AccessManagerUpgradeable
         | 
| 8 | 
            +
            {
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                function initialize(address initialAdmin)
         | 
| 11 | 
            +
                    external
         | 
| 12 | 
            +
                    initializer()
         | 
| 13 | 
            +
                {
         | 
| 14 | 
            +
                    __AccessManager_init(initialAdmin);
         | 
| 15 | 
            +
                }
         | 
| 16 | 
            +
            }
         |