@etherisc/gif-next 0.0.2-bb3faee-097 → 0.0.2-bb9ecaf-723
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 +15 -320
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +2 -2
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +49 -29
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +201 -130
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +845 -126
- 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 +73 -46
- 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 +105 -77
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +12 -2
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +12 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +38 -32
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +8 -18
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +93 -54
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -10
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +2 -2
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +79 -59
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -10
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- 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 +20 -30
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +93 -54
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +64 -74
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +93 -54
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +21 -31
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +93 -54
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +16 -26
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +24 -34
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +93 -54
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +25 -35
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +93 -54
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +50 -228
- 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 +23 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +20 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +70 -35
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +335 -284
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +82 -112
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +55 -175
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +40 -20
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +45 -25
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1362 -2115
- 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 +2 -2
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/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 +2 -2
- 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 +6 -16
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +87 -48
- 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 +0 -10
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -10
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +54 -34
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +0 -10
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +93 -54
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +2 -2
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +66 -46
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +0 -10
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +0 -10
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +2 -2
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +2 -2
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -47
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +48 -28
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -10
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +93 -54
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -74
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +71 -51
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -10
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +2 -2
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +64 -44
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +2 -2
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +55 -35
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +0 -10
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +46 -26
- 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/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +312 -217
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +126 -63
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +41 -21
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +330 -211
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +98 -86
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +62 -40
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +0 -10
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +28 -28
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +65 -45
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
- 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/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -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/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/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 +0 -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/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +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 +0 -10
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +22 -48
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -38
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +44 -24
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +198 -166
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -2
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
- 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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +21 -2
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- 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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- 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/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +22 -6
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +220 -321
- package/contracts/authorization/AccessAdminLib.sol +309 -27
- package/contracts/authorization/AccessManagerCloneable.sol +0 -18
- package/contracts/authorization/Authorization.sol +30 -9
- package/contracts/authorization/IAccess.sol +13 -14
- package/contracts/authorization/IAccessAdmin.sol +9 -11
- package/contracts/authorization/ServiceAuthorization.sol +10 -30
- package/contracts/distribution/BasicDistribution.sol +1 -2
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +2 -4
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +11 -0
- package/contracts/instance/IInstanceService.sol +2 -0
- package/contracts/instance/Instance.sol +18 -14
- package/contracts/instance/InstanceAdmin.sol +43 -119
- package/contracts/instance/InstanceAuthorizationV3.sol +49 -40
- package/contracts/instance/InstanceReader.sol +33 -59
- package/contracts/instance/InstanceService.sol +57 -43
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/module/IComponents.sol +0 -2
- package/contracts/oracle/BasicOracle.sol +1 -2
- package/contracts/oracle/BasicOracleAuthorization.sol +1 -1
- package/contracts/oracle/Oracle.sol +2 -4
- package/contracts/pool/BasicPool.sol +1 -2
- package/contracts/pool/BasicPoolAuthorization.sol +1 -1
- package/contracts/pool/Pool.sol +2 -4
- package/contracts/product/ApplicationService.sol +2 -2
- package/contracts/product/BasicProduct.sol +1 -2
- package/contracts/product/BasicProductAuthorization.sol +1 -1
- package/contracts/product/ClaimService.sol +49 -53
- package/contracts/product/PolicyService.sol +9 -9
- package/contracts/product/Product.sol +2 -4
- package/contracts/product/RiskService.sol +3 -4
- package/contracts/registry/RegistryAdmin.sol +12 -30
- package/contracts/registry/RegistryAuthorization.sol +32 -31
- package/contracts/registry/ReleaseAdmin.sol +13 -9
- package/contracts/shared/Component.sol +2 -6
- package/contracts/shared/ComponentService.sol +22 -18
- package/contracts/shared/InstanceLinkedComponent.sol +2 -4
- package/contracts/staking/IStaking.sol +0 -1
- package/contracts/staking/Staking.sol +6 -6
- package/contracts/staking/StakingStore.sol +6 -0
- package/contracts/type/Blocknumber.sol +4 -9
- package/contracts/upgradeability/ProxyManager.sol +2 -2
- package/package.json +1 -1
- 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/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
@@ -3,16 +3,16 @@ 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
|
|
8
7
|
import {IAccess} from "./IAccess.sol";
|
9
8
|
import {IAccessAdmin} from "./IAccessAdmin.sol";
|
10
9
|
import {IAuthorization} from "./IAuthorization.sol";
|
11
10
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
|
+
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
12
12
|
|
13
|
-
import {ADMIN_ROLE_NAME, PUBLIC_ROLE_NAME} from "./AccessAdmin.sol";
|
14
13
|
import {AccessAdminLib} from "./AccessAdminLib.sol";
|
15
14
|
import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
|
15
|
+
import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
|
16
16
|
import {ContractLib} from "../shared/ContractLib.sol";
|
17
17
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
18
18
|
import {ObjectType} from "../type/ObjectType.sol";
|
@@ -22,9 +22,6 @@ import {Str, StrLib} from "../type/String.sol";
|
|
22
22
|
import {TimestampLib} from "../type/Timestamp.sol";
|
23
23
|
import {VersionPart} from "../type/Version.sol";
|
24
24
|
|
25
|
-
function ADMIN_ROLE_NAME() pure returns (string memory) { return "AdminRole"; }
|
26
|
-
function PUBLIC_ROLE_NAME() pure returns (string memory) { return "PublicRole"; }
|
27
|
-
|
28
25
|
|
29
26
|
/**
|
30
27
|
* @dev A generic access amin contract that implements role based access control based on OpenZeppelin's AccessManager contract.
|
@@ -33,7 +30,6 @@ function PUBLIC_ROLE_NAME() pure returns (string memory) { return "PublicRole";
|
|
33
30
|
*/
|
34
31
|
contract AccessAdmin is
|
35
32
|
AccessManagedUpgradeable,
|
36
|
-
ReentrancyGuardUpgradeable,
|
37
33
|
IAccessAdmin
|
38
34
|
{
|
39
35
|
using EnumerableSet for EnumerableSet.AddressSet;
|
@@ -48,9 +44,9 @@ contract AccessAdmin is
|
|
48
44
|
/// @dev the authorization contract used for initial access control
|
49
45
|
IAuthorization internal _authorization;
|
50
46
|
|
51
|
-
/// @dev stores the deployer address and allows to create initializers
|
52
|
-
/// that are restricted to the deployer address.
|
53
|
-
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;
|
54
50
|
|
55
51
|
/// @dev the linked NFT ID
|
56
52
|
NftId internal _linkedNftId;
|
@@ -64,6 +60,9 @@ contract AccessAdmin is
|
|
64
60
|
/// @dev store array with all created roles
|
65
61
|
RoleId [] internal _roleIds;
|
66
62
|
|
63
|
+
// @dev target type specific role id counters
|
64
|
+
mapping(TargetType => uint64) internal _nextRoleId;
|
65
|
+
|
67
66
|
/// @dev store set of current role members for given role
|
68
67
|
mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
|
69
68
|
|
@@ -85,22 +84,6 @@ contract AccessAdmin is
|
|
85
84
|
/// @dev temporary dynamic functions array
|
86
85
|
bytes4[] private _functions;
|
87
86
|
|
88
|
-
// @dev target type specific role id counters
|
89
|
-
mapping(TargetType => uint64) internal _nextRoleId;
|
90
|
-
|
91
|
-
modifier onlyDeployer() {
|
92
|
-
// special case for cloned AccessAdmin contracts
|
93
|
-
// IMPORTANT cloning and initialize authority needs to be done in a single transaction
|
94
|
-
if (_deployer == address(0)) {
|
95
|
-
_deployer = msg.sender;
|
96
|
-
}
|
97
|
-
|
98
|
-
if (msg.sender != _deployer) {
|
99
|
-
revert ErrorAccessAdminNotDeployer();
|
100
|
-
}
|
101
|
-
_;
|
102
|
-
}
|
103
|
-
|
104
87
|
|
105
88
|
//-------------- initialization functions ------------------------------//
|
106
89
|
|
@@ -117,25 +100,18 @@ contract AccessAdmin is
|
|
117
100
|
}
|
118
101
|
|
119
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.
|
120
107
|
function __AccessAdmin_init(
|
121
108
|
address authority,
|
122
109
|
string memory adminName
|
123
110
|
)
|
124
111
|
internal
|
125
112
|
onlyInitializing()
|
126
|
-
onlyDeployer()
|
127
113
|
{
|
128
|
-
|
129
|
-
// only contract check (authority might not yet be initialized at this time)
|
130
|
-
if (!ContractLib.isContract(authority)) {
|
131
|
-
revert ErrorAccessAdminAuthorityNotContract(authority);
|
132
|
-
}
|
133
|
-
|
134
|
-
// check name not empty
|
135
|
-
if (bytes(adminName).length == 0) {
|
136
|
-
revert ErrorAccessAdminAccessManagerEmptyName();
|
137
|
-
}
|
138
|
-
|
114
|
+
AccessAdminLib.checkInitParameters(authority, adminName);
|
139
115
|
_authority = AccessManagerCloneable(authority);
|
140
116
|
_authority.initialize(address(this));
|
141
117
|
|
@@ -155,11 +131,22 @@ contract AccessAdmin is
|
|
155
131
|
// set initial linked NFT ID to zero
|
156
132
|
_linkedNftId = NftIdLib.zero();
|
157
133
|
|
158
|
-
//
|
159
|
-
|
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());
|
160
147
|
}
|
161
148
|
|
162
|
-
//--- view functions for access
|
149
|
+
//--- view functions for access admin ---------------------------------------//
|
163
150
|
|
164
151
|
function getRelease() public view virtual returns (VersionPart release) {
|
165
152
|
return _authority.getRelease();
|
@@ -176,11 +163,6 @@ contract AccessAdmin is
|
|
176
163
|
}
|
177
164
|
|
178
165
|
|
179
|
-
function getLinkedOwner() external view returns (address linkedOwner) {
|
180
|
-
return getRegistry().ownerOf(_linkedNftId);
|
181
|
-
}
|
182
|
-
|
183
|
-
|
184
166
|
function getAuthorization() public view returns (IAuthorization authorization) {
|
185
167
|
return _authorization;
|
186
168
|
}
|
@@ -208,21 +190,17 @@ contract AccessAdmin is
|
|
208
190
|
return RoleId.wrap(_authority.PUBLIC_ROLE());
|
209
191
|
}
|
210
192
|
|
211
|
-
function roleExists(string memory name) public view returns (bool exists) {
|
212
|
-
// special case for admin and public roles
|
213
|
-
if (StrLib.eq(name, ADMIN_ROLE_NAME()) || StrLib.eq(name, PUBLIC_ROLE_NAME())) {
|
214
|
-
return true;
|
215
|
-
}
|
216
|
-
|
217
|
-
return _roleForName[StrLib.toStr(name)].roleId.gtz();
|
218
|
-
}
|
219
|
-
|
220
193
|
function roleExists(RoleId roleId) public view returns (bool exists) {
|
221
|
-
return _roleInfo[roleId].
|
194
|
+
return _roleInfo[roleId].targetType != TargetType.Undefined;
|
222
195
|
}
|
223
196
|
|
224
|
-
function getRoleForName(string memory name) public view returns (RoleId roleId) {
|
225
|
-
|
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
|
+
}
|
226
204
|
}
|
227
205
|
|
228
206
|
function getRoleInfo(RoleId roleId) public view returns (RoleInfo memory) {
|
@@ -234,7 +212,7 @@ contract AccessAdmin is
|
|
234
212
|
}
|
235
213
|
|
236
214
|
function isRoleCustom(RoleId roleId) external view returns (bool isActive) {
|
237
|
-
return _roleInfo[roleId].
|
215
|
+
return _roleInfo[roleId].targetType == TargetType.Custom;
|
238
216
|
}
|
239
217
|
|
240
218
|
function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
|
@@ -282,6 +260,8 @@ contract AccessAdmin is
|
|
282
260
|
return _authority.isLocked() || _authority.isTargetClosed(target);
|
283
261
|
}
|
284
262
|
|
263
|
+
//--- view functions for target functions -------------------------------//
|
264
|
+
|
285
265
|
function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
|
286
266
|
return SelectorSetLib.size(_targetFunctions[target]);
|
287
267
|
}
|
@@ -305,8 +285,13 @@ contract AccessAdmin is
|
|
305
285
|
selector.toBytes4()));
|
306
286
|
}
|
307
287
|
|
308
|
-
|
309
|
-
|
288
|
+
|
289
|
+
function getFunctionInfo(address target, Selector selector)
|
290
|
+
external
|
291
|
+
view
|
292
|
+
returns (FunctionInfo memory functionInfo)
|
293
|
+
{
|
294
|
+
return _functionInfo[target][selector];
|
310
295
|
}
|
311
296
|
|
312
297
|
//--- internal/private functions -------------------------------------------------//
|
@@ -320,150 +305,88 @@ contract AccessAdmin is
|
|
320
305
|
}
|
321
306
|
|
322
307
|
|
323
|
-
function
|
324
|
-
|
325
|
-
|
326
|
-
onlyInitializing()
|
327
|
-
{
|
328
|
-
// setup admin role
|
329
|
-
_createRoleUnchecked(
|
330
|
-
ADMIN_ROLE(),
|
331
|
-
AccessAdminLib.toRole({
|
332
|
-
adminRoleId: ADMIN_ROLE(),
|
333
|
-
roleType: RoleType.Contract,
|
334
|
-
maxMemberCount: 1,
|
335
|
-
name: ADMIN_ROLE_NAME()}));
|
336
|
-
|
337
|
-
// add this contract as admin role member, as contract roles cannot be revoked
|
338
|
-
// and max member count is 1 for admin role this access admin contract will
|
339
|
-
// always be the only admin of the access manager.
|
340
|
-
_roleMembers[
|
341
|
-
RoleIdLib.toRoleId(_authority.ADMIN_ROLE())].add(address(this));
|
342
|
-
|
343
|
-
// setup public role
|
344
|
-
_createRoleUnchecked(
|
345
|
-
PUBLIC_ROLE(),
|
346
|
-
AccessAdminLib.toRole({
|
347
|
-
adminRoleId: ADMIN_ROLE(),
|
348
|
-
roleType: RoleType.Core,
|
349
|
-
maxMemberCount: type(uint32).max,
|
350
|
-
name: PUBLIC_ROLE_NAME()}));
|
351
|
-
}
|
352
|
-
|
353
|
-
|
354
|
-
/// @dev Authorize the functions of the target for the specified role.
|
355
|
-
function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
|
308
|
+
function _createRoles(
|
309
|
+
IServiceAuthorization authorization
|
310
|
+
)
|
356
311
|
internal
|
357
312
|
{
|
358
|
-
|
359
|
-
getTargetForName(target),
|
360
|
-
_toAuthorizedRoleId(authorization, roleId),
|
361
|
-
authorization.getAuthorizedFunctions(
|
362
|
-
target,
|
363
|
-
roleId),
|
364
|
-
true);
|
365
|
-
}
|
313
|
+
RoleId[] memory roles = authorization.getRoles();
|
366
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());
|
367
319
|
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
// special case for service roles (service roles have predefined role ids)
|
373
|
-
if (roleId.isServiceRole()) {
|
320
|
+
if (!exists) {
|
321
|
+
if (!AccessAdminLib.isDynamicRoleId(authzRoleId)) {
|
322
|
+
roleId = authzRoleId;
|
323
|
+
}
|
374
324
|
|
375
|
-
// create service role if missing
|
376
|
-
if (!roleExists(roleId)) {
|
377
325
|
_createRole(
|
378
|
-
roleId,
|
379
|
-
|
380
|
-
|
381
|
-
RoleType.Contract,
|
382
|
-
1,
|
383
|
-
authorization.getRoleName(roleId)));
|
326
|
+
roleId,
|
327
|
+
roleInfo,
|
328
|
+
true);
|
384
329
|
}
|
385
|
-
|
386
|
-
return roleId;
|
387
330
|
}
|
388
|
-
|
389
|
-
string memory roleName = authorization.getRoleInfo(roleId).name.toString();
|
390
|
-
return authorizedRoleId = getRoleForName(roleName);
|
391
331
|
}
|
392
332
|
|
393
333
|
|
394
|
-
|
395
|
-
|
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(
|
396
337
|
RoleId roleId,
|
397
|
-
|
398
|
-
bool
|
338
|
+
RoleInfo memory info,
|
339
|
+
bool revertOnExistingRole
|
399
340
|
)
|
400
341
|
internal
|
401
342
|
{
|
402
|
-
|
403
|
-
|
343
|
+
bool isAdminOrPublicRole = AccessAdminLib.checkRoleCreation(this, roleId, info, revertOnExistingRole);
|
344
|
+
if (!isAdminOrPublicRole) {
|
345
|
+
_createRoleUnchecked(roleId, info);
|
404
346
|
}
|
405
|
-
|
406
|
-
// apply authz via access manager
|
407
|
-
_grantRoleAccessToFunctions(
|
408
|
-
target,
|
409
|
-
roleId,
|
410
|
-
functions,
|
411
|
-
addFunctions); // add functions
|
412
347
|
}
|
413
348
|
|
414
349
|
|
415
|
-
|
416
|
-
function _grantRoleAccessToFunctions(
|
417
|
-
address target,
|
350
|
+
function _createRoleUnchecked(
|
418
351
|
RoleId roleId,
|
419
|
-
|
420
|
-
bool addFunctions
|
352
|
+
RoleInfo memory info
|
421
353
|
)
|
422
|
-
|
354
|
+
private
|
423
355
|
{
|
424
|
-
|
425
|
-
|
356
|
+
// create role info
|
357
|
+
info.createdAt = TimestampLib.current();
|
358
|
+
info.pausedAt = TimestampLib.max();
|
359
|
+
_roleInfo[roleId] = info;
|
426
360
|
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
361
|
+
// create role name info
|
362
|
+
_roleForName[info.name] = RoleNameInfo({
|
363
|
+
roleId: roleId,
|
364
|
+
exists: true});
|
431
365
|
|
432
|
-
//
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
roleId,
|
437
|
-
functions[i],
|
438
|
-
addFunctions);
|
439
|
-
}
|
366
|
+
// add role to list of roles
|
367
|
+
_roleIds.push(roleId);
|
368
|
+
|
369
|
+
emit LogAccessAdminRoleCreated(_adminName, roleId, info.targetType, info.adminRoleId, info.name.toString());
|
440
370
|
}
|
441
371
|
|
442
372
|
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
FunctionInfo memory func,
|
447
|
-
bool addFunction
|
448
|
-
)
|
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)
|
449
376
|
internal
|
450
377
|
{
|
451
|
-
|
452
|
-
Selector selector = func.selector;
|
453
|
-
_functionInfo[target][selector] = func;
|
378
|
+
AccessAdminLib.checkRoleExists(this, roleId, false, false);
|
454
379
|
|
455
|
-
|
456
|
-
|
457
|
-
else {
|
380
|
+
if (active) {
|
381
|
+
_roleInfo[roleId].pausedAt = TimestampLib.max();
|
382
|
+
} else {
|
383
|
+
_roleInfo[roleId].pausedAt = TimestampLib.current();
|
384
|
+
}
|
458
385
|
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
string(abi.encodePacked(
|
464
|
-
func.name.toString(),
|
465
|
-
"(): ",
|
466
|
-
_getRoleName(roleId))));
|
386
|
+
Blocknumber lastUpdateIn = _roleInfo[roleId].lastUpdateIn;
|
387
|
+
_roleInfo[roleId].lastUpdateIn = BlocknumberLib.current();
|
388
|
+
|
389
|
+
emit LogAccessAdminRoleActivatedSet(_adminName, roleId, active, lastUpdateIn);
|
467
390
|
}
|
468
391
|
|
469
392
|
|
@@ -471,7 +394,7 @@ contract AccessAdmin is
|
|
471
394
|
function _grantRoleToAccount(RoleId roleId, address account)
|
472
395
|
internal
|
473
396
|
{
|
474
|
-
|
397
|
+
AccessAdminLib.checkRoleExists(this, roleId, true, false);
|
475
398
|
|
476
399
|
// check max role members will not be exceeded
|
477
400
|
if (_roleMembers[roleId].length() >= _roleInfo[roleId].maxMemberCount) {
|
@@ -480,7 +403,7 @@ contract AccessAdmin is
|
|
480
403
|
|
481
404
|
// check account is contract for contract role
|
482
405
|
if (
|
483
|
-
_roleInfo[roleId].
|
406
|
+
_roleInfo[roleId].targetType != TargetType.Custom &&
|
484
407
|
!ContractLib.isContract(account) // will fail in account's constructor
|
485
408
|
) {
|
486
409
|
revert ErrorAccessAdminRoleMemberNotContract(roleId, account);
|
@@ -493,7 +416,10 @@ contract AccessAdmin is
|
|
493
416
|
account,
|
494
417
|
0);
|
495
418
|
|
496
|
-
emit LogAccessAdminRoleGranted(
|
419
|
+
emit LogAccessAdminRoleGranted(
|
420
|
+
_adminName,
|
421
|
+
account,
|
422
|
+
AccessAdminLib.getRoleName(this, roleId));
|
497
423
|
}
|
498
424
|
|
499
425
|
|
@@ -501,10 +427,10 @@ contract AccessAdmin is
|
|
501
427
|
function _revokeRoleFromAccount(RoleId roleId, address account)
|
502
428
|
internal
|
503
429
|
{
|
504
|
-
|
430
|
+
AccessAdminLib.checkRoleExists(this, roleId, false, false);
|
505
431
|
|
506
432
|
// check for attempt to revoke contract role
|
507
|
-
if (_roleInfo[roleId].
|
433
|
+
if (_roleInfo[roleId].targetType != TargetType.Custom) {
|
508
434
|
revert ErrorAccessAdminRoleMemberRemovalDisabled(roleId, account);
|
509
435
|
}
|
510
436
|
|
@@ -518,57 +444,35 @@ contract AccessAdmin is
|
|
518
444
|
}
|
519
445
|
|
520
446
|
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
RoleInfo memory info
|
447
|
+
function _getOrCreateTargetRoleIdAndName(
|
448
|
+
address target,
|
449
|
+
string memory targetName,
|
450
|
+
TargetType targetType
|
526
451
|
)
|
527
452
|
internal
|
453
|
+
returns (
|
454
|
+
RoleId roleId,
|
455
|
+
string memory roleName,
|
456
|
+
bool exists
|
457
|
+
)
|
528
458
|
{
|
529
|
-
|
530
|
-
|
531
|
-
return;
|
532
|
-
}
|
533
|
-
|
534
|
-
AccessAdminLib.checkRoleCreation(this, roleId, info);
|
535
|
-
_createRoleUnchecked(roleId, info);
|
536
|
-
}
|
459
|
+
roleName = AccessAdminLib.toRoleName(targetName);
|
460
|
+
(roleId, exists) = getRoleForName(roleName);
|
537
461
|
|
462
|
+
if (exists) {
|
463
|
+
return (roleId, roleName, true);
|
464
|
+
}
|
538
465
|
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
internal
|
543
|
-
{
|
544
|
-
if (active) {
|
545
|
-
_roleInfo[roleId].pausedAt = TimestampLib.max();
|
466
|
+
// get roleId
|
467
|
+
if (targetType == TargetType.Service || targetType == TargetType.GenericService) {
|
468
|
+
roleId = AccessAdminLib.getServiceRoleId(target, targetType);
|
546
469
|
} else {
|
547
|
-
|
548
|
-
|
549
|
-
}
|
550
|
-
|
551
|
-
|
552
|
-
function _createManagedTarget(
|
553
|
-
address target,
|
554
|
-
string memory targetName,
|
555
|
-
TargetType targetType
|
556
|
-
)
|
557
|
-
internal
|
558
|
-
returns (RoleId contractRoleId)
|
559
|
-
{
|
560
|
-
return _createTarget(target, targetName, targetType, true);
|
561
|
-
}
|
562
|
-
|
470
|
+
uint64 nextRoleId = _nextRoleId[targetType];
|
471
|
+
roleId = AccessAdminLib.getTargetRoleId(target, targetType, nextRoleId);
|
563
472
|
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
TargetType targetType
|
568
|
-
)
|
569
|
-
internal
|
570
|
-
{
|
571
|
-
_createTarget(target, targetName, targetType, false);
|
473
|
+
// increment target type specific role id counter
|
474
|
+
_nextRoleId[targetType]++;
|
475
|
+
}
|
572
476
|
}
|
573
477
|
|
574
478
|
|
@@ -578,7 +482,7 @@ contract AccessAdmin is
|
|
578
482
|
TargetType targetType,
|
579
483
|
bool checkAuthority
|
580
484
|
)
|
581
|
-
|
485
|
+
internal
|
582
486
|
returns (RoleId contractRoleId)
|
583
487
|
{
|
584
488
|
// checks
|
@@ -607,29 +511,6 @@ contract AccessAdmin is
|
|
607
511
|
}
|
608
512
|
|
609
513
|
|
610
|
-
function _createRoleUnchecked(
|
611
|
-
RoleId roleId,
|
612
|
-
RoleInfo memory info
|
613
|
-
)
|
614
|
-
private
|
615
|
-
{
|
616
|
-
// create role info
|
617
|
-
info.createdAt = TimestampLib.current();
|
618
|
-
info.pausedAt = TimestampLib.max();
|
619
|
-
_roleInfo[roleId] = info;
|
620
|
-
|
621
|
-
// create role name info
|
622
|
-
_roleForName[info.name] = RoleNameInfo({
|
623
|
-
roleId: roleId,
|
624
|
-
exists: true});
|
625
|
-
|
626
|
-
// add role to list of roles
|
627
|
-
_roleIds.push(roleId);
|
628
|
-
|
629
|
-
emit LogAccessAdminRoleCreated(_adminName, roleId, info.roleType, info.adminRoleId, info.name.toString());
|
630
|
-
}
|
631
|
-
|
632
|
-
|
633
514
|
/// @dev Creates a new target and a corresponding contract role.
|
634
515
|
/// The function assigns the role to the target and logs the creation.
|
635
516
|
function _createTargetUnchecked(
|
@@ -643,12 +524,18 @@ contract AccessAdmin is
|
|
643
524
|
{
|
644
525
|
// create target role (if not existing)
|
645
526
|
string memory roleName;
|
646
|
-
|
527
|
+
bool roleExists;
|
528
|
+
(targetRoleId, roleName, roleExists) = _getOrCreateTargetRoleIdAndName(target, targetName, targetType);
|
647
529
|
|
648
|
-
if (!roleExists
|
530
|
+
if (!roleExists) {
|
649
531
|
_createRole(
|
650
532
|
targetRoleId,
|
651
|
-
AccessAdminLib.
|
533
|
+
AccessAdminLib.roleInfo(
|
534
|
+
ADMIN_ROLE(),
|
535
|
+
targetType,
|
536
|
+
1,
|
537
|
+
roleName),
|
538
|
+
true); // revert on existing role
|
652
539
|
}
|
653
540
|
|
654
541
|
// create target info
|
@@ -657,8 +544,8 @@ contract AccessAdmin is
|
|
657
544
|
name: name,
|
658
545
|
targetType: targetType,
|
659
546
|
roleId: targetRoleId,
|
660
|
-
createdAt: TimestampLib.current()
|
661
|
-
|
547
|
+
createdAt: TimestampLib.current(),
|
548
|
+
lastUpdateIn: BlocknumberLib.current()});
|
662
549
|
|
663
550
|
// create name to target mapping
|
664
551
|
_targetForName[name] = target;
|
@@ -673,45 +560,101 @@ contract AccessAdmin is
|
|
673
560
|
}
|
674
561
|
|
675
562
|
|
676
|
-
function
|
677
|
-
address target,
|
678
|
-
string memory targetName,
|
679
|
-
TargetType targetType
|
680
|
-
)
|
563
|
+
function _setTargetLocked(address target, bool locked)
|
681
564
|
internal
|
682
|
-
returns (
|
683
|
-
RoleId roleId,
|
684
|
-
string memory roleName
|
685
|
-
)
|
686
565
|
{
|
687
|
-
|
688
|
-
|
689
|
-
roleId = AccessAdminLib.getServiceRoleId(target, targetType);
|
690
|
-
} else {
|
691
|
-
roleId = AccessAdminLib.getTargetRoleId(target, targetType, _nextRoleId[targetType]);
|
566
|
+
AccessAdminLib.checkTargetExists(this, target);
|
567
|
+
_authority.setTargetClosed(target, locked);
|
692
568
|
|
693
|
-
|
694
|
-
|
695
|
-
|
569
|
+
// logging
|
570
|
+
Blocknumber lastUpdateIn = _targetInfo[target].lastUpdateIn;
|
571
|
+
_targetInfo[target].lastUpdateIn = BlocknumberLib.current();
|
696
572
|
|
697
|
-
|
698
|
-
roleName = AccessAdminLib.toRoleName(targetName);
|
573
|
+
emit LogAccessAdminTargetLockedSet(_adminName, target, locked, lastUpdateIn);
|
699
574
|
}
|
700
575
|
|
701
576
|
|
702
|
-
|
577
|
+
/// @dev Authorize the functions of the target for the specified role.
|
578
|
+
function _authorizeFunctions(IAuthorization authorization, Str target, RoleId roleId)
|
703
579
|
internal
|
704
580
|
{
|
705
|
-
|
706
|
-
|
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);
|
707
592
|
}
|
708
593
|
|
709
594
|
|
710
|
-
|
711
|
-
|
712
|
-
|
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,
|
599
|
+
RoleId roleId,
|
600
|
+
FunctionInfo[] memory functions,
|
601
|
+
bool onlyComponentOrContractTargets,
|
602
|
+
bool addFunctions
|
603
|
+
)
|
604
|
+
internal
|
605
|
+
{
|
606
|
+
// checks
|
607
|
+
AccessAdminLib.checkTargetAndRoleForFunctions(
|
608
|
+
this,
|
609
|
+
target,
|
610
|
+
roleId,
|
611
|
+
onlyComponentOrContractTargets);
|
612
|
+
|
613
|
+
if (addFunctions && roleId == getAdminRole()) {
|
614
|
+
revert ErrorAccessAdminAuthorizeForAdminRoleInvalid(target);
|
615
|
+
}
|
616
|
+
|
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);
|
713
629
|
}
|
714
|
-
|
630
|
+
}
|
631
|
+
|
632
|
+
|
633
|
+
function _updateFunctionAccess(
|
634
|
+
address target,
|
635
|
+
RoleId roleId,
|
636
|
+
FunctionInfo memory func,
|
637
|
+
bool addFunction
|
638
|
+
)
|
639
|
+
internal
|
640
|
+
{
|
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);
|
715
658
|
}
|
716
659
|
|
717
660
|
|
@@ -733,48 +676,4 @@ contract AccessAdmin is
|
|
733
676
|
expectServiceAuthorization,
|
734
677
|
checkAlreadyInitialized);
|
735
678
|
}
|
736
|
-
|
737
|
-
|
738
|
-
function _checkRoleExists(
|
739
|
-
RoleId roleId,
|
740
|
-
bool onlyActiveRole,
|
741
|
-
bool allowAdminAndPublicRoles
|
742
|
-
)
|
743
|
-
internal
|
744
|
-
view
|
745
|
-
{
|
746
|
-
if (!roleExists(roleId)) {
|
747
|
-
revert ErrorAccessAdminRoleUnknown(roleId);
|
748
|
-
}
|
749
|
-
|
750
|
-
if (!allowAdminAndPublicRoles) {
|
751
|
-
if (roleId == ADMIN_ROLE()) {
|
752
|
-
revert ErrorAccessAdminInvalidUserOfAdminRole();
|
753
|
-
}
|
754
|
-
|
755
|
-
// check role is not public role
|
756
|
-
if (roleId == PUBLIC_ROLE()) {
|
757
|
-
revert ErrorAccessAdminInvalidUserOfPublicRole();
|
758
|
-
}
|
759
|
-
}
|
760
|
-
|
761
|
-
// check if role is disabled
|
762
|
-
if (onlyActiveRole && _roleInfo[roleId].pausedAt <= TimestampLib.current()) {
|
763
|
-
revert ErrorAccessAdminRoleIsPaused(roleId);
|
764
|
-
}
|
765
|
-
}
|
766
|
-
|
767
|
-
|
768
|
-
/// @dev check if target exists and reverts if it doesn't
|
769
|
-
function _checkTargetExists(
|
770
|
-
address target
|
771
|
-
)
|
772
|
-
internal
|
773
|
-
view
|
774
|
-
{
|
775
|
-
// check not yet created
|
776
|
-
if (!targetExists(target)) {
|
777
|
-
revert ErrorAccessAdminTargetNotCreated(target);
|
778
|
-
}
|
779
|
-
}
|
780
679
|
}
|