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