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