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