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