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