@etherisc/gif-next 0.0.2-ffa91a6-022 → 3.0.0-06d5e8b-738
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 +124 -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 +370 -141
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1582 -202
- 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 +728 -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 +1234 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +896 -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 +2497 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +891 -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 +753 -401
- 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 +747 -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 +539 -314
- 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 +551 -246
- 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 +169 -111
- 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/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/{ComponentVerifyingService.sol/ComponentVerifyingService.json → IAuthorizedComponent.sol/IAuthorizedComponent.json} +238 -90
- 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 +303 -326
- package/contracts/authorization/AccessAdminLib.sol +535 -23
- 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 +300 -0
- package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
- package/contracts/examples/flight/FlightOracle.sol +171 -0
- package/contracts/examples/flight/FlightOracleAuthorization.sol +53 -0
- package/contracts/examples/flight/FlightPool.sol +89 -0
- package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
- package/contracts/examples/flight/FlightProduct.sol +685 -0
- package/contracts/examples/flight/FlightProductAuthorization.sol +69 -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 +150 -294
- package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
- package/contracts/instance/InstanceReader.sol +376 -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 +39 -118
- package/contracts/registry/RegistryAuthorization.sol +139 -69
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +59 -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/IAuthorizedComponent.sol +15 -0
- package/contracts/shared/IComponent.sol +1 -1
- package/contracts/shared/IComponentService.sol +14 -15
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InstanceLinkedComponent.sol +64 -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/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
|
}
|
@@ -321,14 +279,20 @@ contract AccessAdmin is
|
|
321
279
|
{
|
322
280
|
Selector selector = SelectorSetLib.at(_targetFunctions[target], idx);
|
323
281
|
func = _functionInfo[target][selector];
|
324
|
-
roleId =
|
325
|
-
|
326
|
-
|
327
|
-
|
282
|
+
roleId = AccessAdminLib.getFunctionRoleId(_authority, target, selector);
|
283
|
+
// roleId = RoleIdLib.toRoleId(
|
284
|
+
// _authority.getTargetFunctionRole(
|
285
|
+
// target,
|
286
|
+
// selector.toBytes4()));
|
328
287
|
}
|
329
288
|
|
330
|
-
|
331
|
-
|
289
|
+
|
290
|
+
function getFunctionInfo(address target, Selector selector)
|
291
|
+
external
|
292
|
+
view
|
293
|
+
returns (FunctionInfo memory functionInfo)
|
294
|
+
{
|
295
|
+
return _functionInfo[target][selector];
|
332
296
|
}
|
333
297
|
|
334
298
|
//--- internal/private functions -------------------------------------------------//
|
@@ -341,161 +305,98 @@ contract AccessAdmin is
|
|
341
305
|
_linkedNftId = getRegistry().getNftIdForAddress(registerable);
|
342
306
|
}
|
343
307
|
|
344
|
-
function _initializeAdminAndPublicRoles()
|
345
|
-
internal
|
346
|
-
virtual
|
347
|
-
onlyInitializing()
|
348
|
-
{
|
349
|
-
RoleId adminRoleId = RoleIdLib.toRoleId(_authority.ADMIN_ROLE());
|
350
|
-
|
351
|
-
// setup admin role
|
352
|
-
_createRoleUnchecked(
|
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
308
|
|
373
|
-
function
|
374
|
-
|
375
|
-
string memory targetName,
|
376
|
-
RoleId targetRoleId
|
309
|
+
function _createRoles(
|
310
|
+
IServiceAuthorization authorization
|
377
311
|
)
|
378
312
|
internal
|
379
313
|
{
|
380
|
-
|
381
|
-
|
314
|
+
RoleId[] memory roles = authorization.getRoles();
|
315
|
+
|
316
|
+
for(uint256 i = 0; i < roles.length; i++) {
|
317
|
+
RoleId authzRoleId = roles[i];
|
318
|
+
IAccess.RoleInfo memory roleInfo = authorization.getRoleInfo(authzRoleId);
|
319
|
+
(RoleId roleId, bool exists) = getRoleForName(roleInfo.name.toString());
|
320
|
+
|
321
|
+
if (!exists) {
|
322
|
+
if (!AccessAdminLib.isDynamicRoleId(authzRoleId) || roleInfo.targetType == TargetType.Custom) {
|
323
|
+
roleId = authzRoleId;
|
324
|
+
}
|
325
|
+
|
326
|
+
_createRole(
|
327
|
+
roleId,
|
328
|
+
roleInfo,
|
329
|
+
true);
|
330
|
+
}
|
331
|
+
}
|
382
332
|
}
|
383
333
|
|
384
|
-
|
385
|
-
|
334
|
+
|
335
|
+
/// @dev Creates a role based on the provided parameters.
|
336
|
+
/// Checks that the provided role and role id and role name not already used.
|
337
|
+
function _createRole(
|
386
338
|
RoleId roleId,
|
387
|
-
|
339
|
+
RoleInfo memory info,
|
340
|
+
bool revertOnExistingRole
|
388
341
|
)
|
389
342
|
internal
|
390
343
|
{
|
391
|
-
|
392
|
-
|
344
|
+
bool isAdminOrPublicRole = AccessAdminLib.checkRoleCreation(this, roleId, info, revertOnExistingRole);
|
345
|
+
if (!isAdminOrPublicRole) {
|
346
|
+
_createRoleUnchecked(roleId, info);
|
393
347
|
}
|
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
348
|
}
|
408
349
|
|
409
|
-
|
410
|
-
|
411
|
-
|
350
|
+
|
351
|
+
function _createRoleUnchecked(
|
352
|
+
RoleId roleId,
|
353
|
+
RoleInfo memory info
|
412
354
|
)
|
413
|
-
|
355
|
+
private
|
414
356
|
{
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
357
|
+
// create role info
|
358
|
+
info.createdAt = TimestampLib.current();
|
359
|
+
info.pausedAt = TimestampLib.max();
|
360
|
+
_roleInfo[roleId] = info;
|
419
361
|
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
functionNames,
|
425
|
-
true); // allowLockedRoles
|
426
|
-
}
|
362
|
+
// create role name info
|
363
|
+
_roleForName[info.name] = RoleNameInfo({
|
364
|
+
roleId: roleId,
|
365
|
+
exists: true});
|
427
366
|
|
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
|
-
}
|
367
|
+
// add role to list of roles
|
368
|
+
_roleIds.push(roleId);
|
369
|
+
|
370
|
+
emit LogAccessAdminRoleCreated(_adminName, roleId, info.targetType, info.adminRoleId, info.name.toString());
|
461
371
|
}
|
462
372
|
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
bytes4[] memory functionSelectors,
|
468
|
-
string[] memory functionNames,
|
469
|
-
bool allowLockedRoles // admin and public roles are locked
|
470
|
-
)
|
373
|
+
|
374
|
+
/// @dev Activates or deactivates role.
|
375
|
+
/// The role activ property is indirectly controlled over the pausedAt timestamp.
|
376
|
+
function _setRoleActive(RoleId roleId, bool active)
|
471
377
|
internal
|
472
|
-
onlyExistingTarget(target)
|
473
|
-
onlyExistingRole(roleId, true, allowLockedRoles)
|
474
378
|
{
|
379
|
+
AccessAdminLib.checkRoleExists(this, roleId, false, false);
|
475
380
|
|
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))));
|
381
|
+
if (active) {
|
382
|
+
_roleInfo[roleId].pausedAt = TimestampLib.max();
|
383
|
+
} else {
|
384
|
+
_roleInfo[roleId].pausedAt = TimestampLib.current();
|
490
385
|
}
|
386
|
+
|
387
|
+
Blocknumber lastUpdateIn = _roleInfo[roleId].lastUpdateIn;
|
388
|
+
_roleInfo[roleId].lastUpdateIn = BlocknumberLib.current();
|
389
|
+
|
390
|
+
emit LogAccessAdminRoleActivatedSet(_adminName, roleId, active, lastUpdateIn);
|
491
391
|
}
|
492
392
|
|
493
393
|
|
494
394
|
/// @dev grant the specified role to the provided account
|
495
395
|
function _grantRoleToAccount(RoleId roleId, address account)
|
496
396
|
internal
|
497
|
-
onlyExistingRole(roleId, true, false)
|
498
397
|
{
|
398
|
+
AccessAdminLib.checkRoleExists(this, roleId, true, false);
|
399
|
+
|
499
400
|
// check max role members will not be exceeded
|
500
401
|
if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
|
501
402
|
revert ErrorAccessAdminRoleMembersLimitReached(roleId, _roleInfo[roleId].maxMemberCount);
|
@@ -503,34 +404,38 @@ contract AccessAdmin is
|
|
503
404
|
|
504
405
|
// check account is contract for contract role
|
505
406
|
if (
|
506
|
-
_roleInfo[roleId].
|
407
|
+
_roleInfo[roleId].targetType != TargetType.Custom &&
|
507
408
|
!ContractLib.isContract(account) // will fail in account's constructor
|
508
409
|
) {
|
509
410
|
revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
|
510
411
|
}
|
511
412
|
|
512
|
-
//
|
413
|
+
// effects
|
513
414
|
_roleMembers[roleId].add(account);
|
514
415
|
_authority.grantRole(
|
515
416
|
RoleId.unwrap(roleId),
|
516
417
|
account,
|
517
418
|
0);
|
518
419
|
|
519
|
-
emit LogAccessAdminRoleGranted(
|
420
|
+
emit LogAccessAdminRoleGranted(
|
421
|
+
_adminName,
|
422
|
+
account,
|
423
|
+
AccessAdminLib.getRoleName(this, roleId));
|
520
424
|
}
|
521
425
|
|
426
|
+
|
522
427
|
/// @dev revoke the specified role from the provided account
|
523
428
|
function _revokeRoleFromAccount(RoleId roleId, address account)
|
524
429
|
internal
|
525
|
-
onlyExistingRole(roleId, false, false)
|
526
430
|
{
|
431
|
+
AccessAdminLib.checkRoleExists(this, roleId, false, false);
|
527
432
|
|
528
|
-
// check
|
529
|
-
if (_roleInfo[roleId].
|
433
|
+
// check for attempt to revoke contract role
|
434
|
+
if (_roleInfo[roleId].targetType != TargetType.Custom) {
|
530
435
|
revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
|
531
436
|
}
|
532
437
|
|
533
|
-
//
|
438
|
+
// effects
|
534
439
|
_roleMembers[roleId].remove(account);
|
535
440
|
_authority.revokeRole(
|
536
441
|
RoleId.unwrap(roleId),
|
@@ -540,165 +445,237 @@ contract AccessAdmin is
|
|
540
445
|
}
|
541
446
|
|
542
447
|
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
RoleInfo memory info
|
448
|
+
function _getOrCreateTargetRoleIdAndName(
|
449
|
+
address target,
|
450
|
+
string memory targetName,
|
451
|
+
TargetType targetType
|
548
452
|
)
|
549
453
|
internal
|
454
|
+
returns (
|
455
|
+
RoleId roleId,
|
456
|
+
string memory roleName,
|
457
|
+
bool exists
|
458
|
+
)
|
550
459
|
{
|
551
|
-
AccessAdminLib.
|
552
|
-
|
460
|
+
roleName = AccessAdminLib.toRoleName(targetName);
|
461
|
+
(roleId, exists) = getRoleForName(roleName);
|
462
|
+
|
463
|
+
if (exists) {
|
464
|
+
return (roleId, roleName, true);
|
465
|
+
}
|
466
|
+
|
467
|
+
// get roleId
|
468
|
+
if (targetType == TargetType.Service || targetType == TargetType.GenericService) {
|
469
|
+
roleId = AccessAdminLib.getServiceRoleId(target, targetType);
|
470
|
+
} else {
|
471
|
+
uint64 nextRoleId = _nextRoleId[targetType];
|
472
|
+
roleId = AccessAdminLib.getTargetRoleId(target, targetType, nextRoleId);
|
473
|
+
|
474
|
+
// increment target type specific role id counter
|
475
|
+
_nextRoleId[targetType]++;
|
476
|
+
}
|
553
477
|
}
|
554
478
|
|
555
479
|
|
556
480
|
function _createTarget(
|
557
481
|
address target,
|
558
482
|
string memory targetName,
|
559
|
-
|
560
|
-
bool
|
483
|
+
TargetType targetType,
|
484
|
+
bool checkAuthority
|
561
485
|
)
|
562
486
|
internal
|
487
|
+
returns (RoleId contractRoleId)
|
563
488
|
{
|
489
|
+
// checks
|
564
490
|
AccessAdminLib.checkTargetCreation(this, target, targetName, checkAuthority);
|
565
|
-
_createTargetUnchecked(target, targetName, custom);
|
566
|
-
}
|
567
491
|
|
492
|
+
// effects
|
493
|
+
contractRoleId = _createTargetUnchecked(
|
494
|
+
target,
|
495
|
+
targetName,
|
496
|
+
targetType,
|
497
|
+
checkAuthority);
|
568
498
|
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
exists: true});
|
583
|
-
|
584
|
-
// add role to list of roles
|
585
|
-
_roleIds.push(roleId);
|
586
|
-
|
587
|
-
emit LogAccessAdminRoleCreated(_adminName, roleId, info.roleType, info.adminRoleId, info.name.toString());
|
499
|
+
// deal with token handler, if applicable
|
500
|
+
(
|
501
|
+
address tokenHandler,
|
502
|
+
string memory tokenHandlerName
|
503
|
+
) = AccessAdminLib.getTokenHandler(target, targetName, targetType);
|
504
|
+
|
505
|
+
if (tokenHandler != address(0)) {
|
506
|
+
_createTargetUnchecked(
|
507
|
+
tokenHandler,
|
508
|
+
tokenHandlerName,
|
509
|
+
targetType,
|
510
|
+
checkAuthority);
|
511
|
+
}
|
588
512
|
}
|
589
513
|
|
590
514
|
|
515
|
+
/// @dev Creates a new target and a corresponding contract role.
|
516
|
+
/// The function assigns the role to the target and logs the creation.
|
591
517
|
function _createTargetUnchecked(
|
592
518
|
address target,
|
593
519
|
string memory targetName,
|
594
|
-
|
520
|
+
TargetType targetType,
|
521
|
+
bool managed
|
595
522
|
)
|
596
523
|
internal
|
524
|
+
returns (RoleId targetRoleId)
|
597
525
|
{
|
526
|
+
// create target role (if not existing)
|
527
|
+
string memory roleName;
|
528
|
+
bool roleExists;
|
529
|
+
(targetRoleId, roleName, roleExists) = _getOrCreateTargetRoleIdAndName(target, targetName, targetType);
|
530
|
+
|
531
|
+
if (!roleExists) {
|
532
|
+
_createRole(
|
533
|
+
targetRoleId,
|
534
|
+
AccessAdminLib.roleInfo(
|
535
|
+
ADMIN_ROLE(),
|
536
|
+
targetType,
|
537
|
+
1,
|
538
|
+
roleName),
|
539
|
+
true); // revert on existing role
|
540
|
+
}
|
541
|
+
|
598
542
|
// create target info
|
599
543
|
Str name = StrLib.toStr(targetName);
|
600
544
|
_targetInfo[target] = TargetInfo({
|
601
545
|
name: name,
|
602
|
-
|
603
|
-
|
604
|
-
|
546
|
+
targetType: targetType,
|
547
|
+
roleId: targetRoleId,
|
548
|
+
createdAt: TimestampLib.current(),
|
549
|
+
lastUpdateIn: BlocknumberLib.current()});
|
605
550
|
|
606
551
|
// create name to target mapping
|
607
552
|
_targetForName[name] = target;
|
608
553
|
|
609
|
-
// add
|
554
|
+
// add target to list of targets
|
610
555
|
_targets.push(target);
|
611
556
|
|
612
|
-
|
557
|
+
// grant contract role to target
|
558
|
+
_grantRoleToAccount(targetRoleId, target);
|
559
|
+
|
560
|
+
emit LogAccessAdminTargetCreated(_adminName, targetName, managed, target, targetRoleId);
|
613
561
|
}
|
614
562
|
|
615
563
|
|
616
564
|
function _setTargetLocked(address target, bool locked)
|
617
565
|
internal
|
618
|
-
onlyExistingTarget(target)
|
619
566
|
{
|
567
|
+
AccessAdminLib.checkTargetExists(this, target);
|
620
568
|
_authority.setTargetClosed(target, locked);
|
621
|
-
}
|
622
569
|
|
570
|
+
// logging
|
571
|
+
Blocknumber lastUpdateIn = _targetInfo[target].lastUpdateIn;
|
572
|
+
_targetInfo[target].lastUpdateIn = BlocknumberLib.current();
|
623
573
|
|
624
|
-
|
625
|
-
if (roleExists(roleId)) {
|
626
|
-
return _roleInfo[roleId].name.toString();
|
627
|
-
}
|
628
|
-
return "<unknown-role>";
|
574
|
+
emit LogAccessAdminTargetLockedSet(_adminName, target, locked, lastUpdateIn);
|
629
575
|
}
|
630
576
|
|
631
577
|
|
632
|
-
|
633
|
-
|
634
|
-
ObjectType expectedDomain,
|
635
|
-
VersionPart expectedRelease,
|
636
|
-
bool checkAlreadyInitialized
|
637
|
-
)
|
578
|
+
/// @dev Authorize the functions of the target for the specified role.
|
579
|
+
function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
|
638
580
|
internal
|
639
|
-
view
|
640
581
|
{
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
582
|
+
_authorizeTargetFunctions(
|
583
|
+
getTargetForName(target),
|
584
|
+
AccessAdminLib.getAuthorizedRole(
|
585
|
+
this,
|
586
|
+
authorization,
|
587
|
+
roleId),
|
588
|
+
authorization.getAuthorizedFunctions(
|
589
|
+
target,
|
590
|
+
roleId),
|
591
|
+
false,
|
592
|
+
true);
|
647
593
|
}
|
648
594
|
|
649
595
|
|
650
|
-
|
596
|
+
/// @dev Authorize the functions of the target for the specified role.
|
597
|
+
/// Flag addFunctions determines if functions are added or removed.
|
598
|
+
function _authorizeTargetFunctions(
|
599
|
+
address target,
|
651
600
|
RoleId roleId,
|
652
|
-
|
601
|
+
FunctionInfo[] memory functions,
|
602
|
+
bool onlyComponentOrContractTargets,
|
603
|
+
bool addFunctions
|
653
604
|
)
|
654
605
|
internal
|
655
|
-
view
|
656
606
|
{
|
657
|
-
|
658
|
-
|
659
|
-
|
607
|
+
// checks
|
608
|
+
AccessAdminLib.checkTargetAndRoleForFunctions(
|
609
|
+
this,
|
610
|
+
target,
|
611
|
+
roleId,
|
612
|
+
onlyComponentOrContractTargets);
|
660
613
|
|
661
|
-
|
662
|
-
|
663
|
-
revert ErrorAccessAdminRoleIsLocked(roleId);
|
614
|
+
if (addFunctions && roleId == getAdminRole()) {
|
615
|
+
revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
|
664
616
|
}
|
665
617
|
|
666
|
-
|
667
|
-
|
668
|
-
|
618
|
+
_authority.setTargetFunctionRole(
|
619
|
+
target,
|
620
|
+
AccessAdminLib.getSelectors(functions),
|
621
|
+
RoleId.unwrap(roleId));
|
622
|
+
|
623
|
+
// update function set and log function grantings
|
624
|
+
for (uint256 i = 0; i < functions.length; i++) {
|
625
|
+
_updateFunctionAccess(
|
626
|
+
target,
|
627
|
+
roleId,
|
628
|
+
functions[i],
|
629
|
+
addFunctions);
|
669
630
|
}
|
670
631
|
}
|
671
632
|
|
672
633
|
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
634
|
+
function _updateFunctionAccess(
|
635
|
+
address target,
|
636
|
+
RoleId roleId,
|
637
|
+
FunctionInfo memory func,
|
638
|
+
bool addFunction
|
677
639
|
)
|
678
640
|
internal
|
679
|
-
view
|
680
641
|
{
|
681
|
-
//
|
682
|
-
|
683
|
-
|
684
|
-
}
|
685
|
-
}
|
642
|
+
// update functions info
|
643
|
+
Selector selector = func.selector;
|
644
|
+
Blocknumber lastUpdateIn = _functionInfo[target][selector].lastUpdateIn;
|
686
645
|
|
646
|
+
// update function sets
|
647
|
+
if (addFunction) { SelectorSetLib.add(_targetFunctions[target], selector); }
|
648
|
+
else { SelectorSetLib.remove(_targetFunctions[target], selector); }
|
687
649
|
|
688
|
-
|
689
|
-
|
690
|
-
address target,
|
691
|
-
ObjectType expectedType
|
692
|
-
)
|
693
|
-
internal
|
694
|
-
view
|
695
|
-
{
|
696
|
-
AccessAdminLib.checkIsRegistered(registry, target, expectedType);
|
697
|
-
}
|
650
|
+
_functionInfo[target][selector] = func;
|
651
|
+
_functionInfo[target][selector].lastUpdateIn = BlocknumberLib.current();
|
698
652
|
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
653
|
+
// logging
|
654
|
+
emit LogAccessAdminFunctionGranted(
|
655
|
+
_adminName,
|
656
|
+
target,
|
657
|
+
AccessAdminLib.toFunctionGrantingString(this, func.name, roleId),
|
658
|
+
lastUpdateIn);
|
659
|
+
}
|
660
|
+
|
661
|
+
|
662
|
+
// TODO cleanup
|
663
|
+
// function _checkAuthorization(
|
664
|
+
// address authorization,
|
665
|
+
// ObjectType expectedDomain,
|
666
|
+
// VersionPart expectedRelease,
|
667
|
+
// bool expectServiceAuthorization,
|
668
|
+
// bool checkAlreadyInitialized
|
669
|
+
// )
|
670
|
+
// internal
|
671
|
+
// view
|
672
|
+
// {
|
673
|
+
// AccessAdminLib.checkAuthorization(
|
674
|
+
// _authorization,
|
675
|
+
// authorization,
|
676
|
+
// expectedDomain,
|
677
|
+
// expectedRelease,
|
678
|
+
// expectServiceAuthorization,
|
679
|
+
// checkAlreadyInitialized);
|
680
|
+
// }
|
704
681
|
}
|