@etherisc/gif-next 0.0.2-82c6d88-499 → 0.0.2-8311e70-020
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 +67 -8
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1341 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +181 -278
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +48 -10
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +144 -544
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -245
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +143 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +201 -261
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +230 -49
- 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 +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +1479 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2408 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +134 -78
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +116 -126
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +162 -215
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1354 -262
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +966 -328
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +135 -330
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +97 -111
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +651 -531
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
- 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/IAccess.sol/IAccess.dbg.json +1 -1
- 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 +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +141 -126
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +127 -398
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +435 -202
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +163 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +270 -27
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +132 -379
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +448 -217
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +124 -662
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +569 -396
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -91
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +435 -212
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +145 -107
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +318 -8
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -113
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -237
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +455 -318
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +258 -536
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +340 -55
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
- 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 +566 -112
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +396 -436
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1325 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +101 -16
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +5 -5
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +578 -492
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -113
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -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 +89 -88
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +550 -209
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +127 -123
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -3
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -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 +148 -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 +55 -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 +112 -351
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -88
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -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 +122 -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 +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -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 +134 -125
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +55 -23
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +100 -171
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +98 -84
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +186 -164
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
- 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 +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- 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 +55 -2
- 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 +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -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 +2 -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 +71 -2
- 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 +66 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/{shared → authorization}/AccessAdmin.sol +271 -371
- package/contracts/authorization/AccessManagerCloneable.sol +149 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +31 -59
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +11 -6
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +45 -25
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +147 -121
- package/contracts/distribution/DistributionService.sol +160 -100
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +26 -40
- package/contracts/distribution/IDistributionService.sol +28 -9
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +438 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IInstance.sol +23 -44
- package/contracts/instance/IInstanceService.sol +16 -41
- package/contracts/instance/Instance.sol +92 -120
- package/contracts/instance/InstanceAdmin.sol +250 -255
- package/contracts/instance/InstanceAuthorizationV3.sol +225 -0
- package/contracts/instance/InstanceReader.sol +238 -34
- package/contracts/instance/InstanceService.sol +145 -180
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +35 -6
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +113 -0
- package/contracts/instance/base/ObjectSet.sol +77 -0
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +14 -15
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +64 -53
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +68 -0
- package/contracts/pool/BundleService.sol +231 -102
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +33 -18
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +53 -50
- package/contracts/pool/Pool.sol +208 -162
- package/contracts/pool/PoolService.sol +343 -180
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +83 -78
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +51 -0
- package/contracts/product/BasicProductAuthorization.sol +41 -0
- package/contracts/product/ClaimService.sol +425 -159
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -7
- package/contracts/product/IPolicyService.sol +46 -34
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +29 -9
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +520 -259
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +66 -62
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +220 -134
- package/contracts/product/RiskService.sol +151 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +72 -32
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +364 -220
- package/contracts/registry/RegistryAdmin.sol +228 -217
- package/contracts/registry/RegistryService.sol +41 -66
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +32 -0
- package/contracts/registry/ReleaseRegistry.sol +511 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +102 -60
- package/contracts/registry/TokenRegistry.sol +8 -10
- package/contracts/shared/Component.sol +71 -126
- package/contracts/shared/ComponentService.sol +463 -380
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +29 -18
- package/contracts/shared/ContractLib.sol +252 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +53 -39
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +3 -2
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +95 -42
- package/contracts/shared/KeyValueStore.sol +7 -3
- package/contracts/shared/Lifecycle.sol +30 -72
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +55 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +18 -36
- package/contracts/shared/TokenHandler.sol +357 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +12 -7
- package/contracts/staking/IStakingService.sol +12 -8
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +86 -73
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +64 -36
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +15 -23
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- 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 -24
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +35 -4
- package/contracts/type/RoleId.sol +57 -93
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +40 -121
- package/contracts/type/Version.sol +18 -6
- package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +8 -5
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- 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/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- 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/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.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/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/instance/base/ObjectManager.sol +0 -80
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -527
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,48 +1,72 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
|
-
import {IInstance} from "../instance/IInstance.sol";
|
11
|
-
import {IAccess} from "../instance/module/IAccess.sol";
|
12
|
-
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
14
|
-
import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, POLICY_SERVICE_ROLE, PRODUCT_SERVICE_ROLE} from "../type/RoleId.sol";
|
15
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
|
+
import {IComponent} from "../shared/IComponent.sol";
|
16
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
17
9
|
import {IComponentService} from "./IComponentService.sol";
|
18
|
-
import {
|
10
|
+
import {IInstance} from "../instance/IInstance.sol";
|
11
|
+
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
12
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
13
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
14
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
19
15
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
20
16
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
21
17
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
22
|
-
import {
|
23
|
-
import {
|
24
|
-
import {
|
18
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
19
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
20
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
21
|
+
|
22
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
23
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
24
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
25
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
26
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
27
|
+
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
28
|
+
import {Service} from "../shared/Service.sol";
|
29
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
30
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
31
|
+
import {VersionPart} from "../type/Version.sol";
|
32
|
+
|
25
33
|
|
26
34
|
contract ComponentService is
|
27
|
-
|
35
|
+
Service,
|
28
36
|
IComponentService
|
29
37
|
{
|
30
|
-
|
31
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
32
|
-
error ErrorComponentServiceNotComponent(address component);
|
33
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
34
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
35
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
36
|
-
error ErrorComponentServiceComponentLocked(address component);
|
37
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
38
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
39
|
-
|
40
38
|
bool private constant INCREASE = true;
|
41
39
|
bool private constant DECREASE = false;
|
42
40
|
|
41
|
+
IAccountingService private _accountingService;
|
43
42
|
IRegistryService private _registryService;
|
44
43
|
IInstanceService private _instanceService;
|
45
44
|
|
45
|
+
modifier onlyComponent(address component) {
|
46
|
+
_checkSupportsInterface(component);
|
47
|
+
_;
|
48
|
+
}
|
49
|
+
|
50
|
+
modifier onlyInstance() {
|
51
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
52
|
+
if (instanceNftId.eqz()) {
|
53
|
+
revert ErrorComponentServiceNotRegistered(msg.sender);
|
54
|
+
}
|
55
|
+
|
56
|
+
ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
|
57
|
+
if (objectType != INSTANCE()) {
|
58
|
+
revert ErrorComponentServiceNotInstance(msg.sender, objectType);
|
59
|
+
}
|
60
|
+
|
61
|
+
VersionPart instanceVersion = IInstance(msg.sender).getRelease();
|
62
|
+
if (instanceVersion != getVersion().toMajorPart()) {
|
63
|
+
revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
|
64
|
+
}
|
65
|
+
|
66
|
+
_;
|
67
|
+
}
|
68
|
+
|
69
|
+
|
46
70
|
function _initialize(
|
47
71
|
address owner,
|
48
72
|
bytes memory data
|
@@ -51,83 +75,182 @@ contract ComponentService is
|
|
51
75
|
virtual override
|
52
76
|
initializer()
|
53
77
|
{
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
78
|
+
(
|
79
|
+
address authority,
|
80
|
+
address registry
|
81
|
+
) = abi.decode(data, (address, address));
|
58
82
|
|
59
|
-
|
83
|
+
__Service_init(authority, registry, owner);
|
60
84
|
|
85
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
61
86
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
62
87
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
63
88
|
|
64
|
-
|
89
|
+
_registerInterface(type(IComponentService).interfaceId);
|
65
90
|
}
|
66
91
|
|
67
92
|
//-------- component ----------------------------------------------------//
|
68
93
|
|
69
|
-
function
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
94
|
+
function registerComponent(address component)
|
95
|
+
external
|
96
|
+
virtual
|
97
|
+
onlyComponent(component)
|
98
|
+
returns (NftId componentNftId)
|
99
|
+
{
|
100
|
+
// type specific registration
|
101
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
102
|
+
if (componentType == POOL()) {
|
103
|
+
return _registerPool(component);
|
76
104
|
}
|
77
|
-
|
78
|
-
|
79
|
-
revert ErrorComponentServiceWalletAddressZero();
|
105
|
+
if (componentType == DISTRIBUTION()) {
|
106
|
+
return _registerDistribution(component);
|
80
107
|
}
|
81
|
-
|
82
|
-
|
83
|
-
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
108
|
+
if (componentType == ORACLE()) {
|
109
|
+
return _registerOracle(component);
|
84
110
|
}
|
85
111
|
|
86
|
-
|
87
|
-
|
88
|
-
emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
|
112
|
+
// fail
|
113
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
89
114
|
}
|
90
115
|
|
91
|
-
|
92
|
-
|
116
|
+
function approveTokenHandler(
|
117
|
+
IERC20Metadata token,
|
118
|
+
Amount amount
|
119
|
+
)
|
120
|
+
external
|
121
|
+
virtual
|
122
|
+
{
|
123
|
+
// checks
|
124
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
125
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
126
|
+
componentNftId).tokenHandler;
|
93
127
|
|
94
|
-
|
95
|
-
|
128
|
+
// effects
|
129
|
+
tokenHandler.approve(token, amount);
|
130
|
+
}
|
96
131
|
|
97
132
|
|
98
|
-
|
133
|
+
function approveStakingTokenHandler(
|
134
|
+
IERC20Metadata token,
|
135
|
+
Amount amount
|
136
|
+
)
|
137
|
+
external
|
138
|
+
virtual
|
139
|
+
{
|
140
|
+
// checks
|
141
|
+
ContractLib.getAndVerifyStaking(
|
142
|
+
getRegistry(),
|
143
|
+
msg.sender); // only active
|
144
|
+
|
145
|
+
// effects
|
146
|
+
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
147
|
+
tokenHandler.approve(token, amount);
|
148
|
+
}
|
149
|
+
|
150
|
+
|
151
|
+
function setWallet(address newWallet)
|
152
|
+
external
|
153
|
+
virtual
|
154
|
+
{
|
155
|
+
// checks
|
156
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
157
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
158
|
+
componentNftId).tokenHandler;
|
159
|
+
|
160
|
+
// effects
|
161
|
+
tokenHandler.setWallet(newWallet);
|
162
|
+
}
|
163
|
+
|
164
|
+
/// @inheritdoc IComponentService
|
165
|
+
function setLockedFromInstance(address componentAddress, bool locked)
|
166
|
+
external
|
167
|
+
virtual
|
168
|
+
onlyInstance()
|
169
|
+
{
|
170
|
+
address instanceAddress = msg.sender;
|
171
|
+
// NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
172
|
+
IInstance instance = IInstance(instanceAddress);
|
173
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
174
|
+
}
|
99
175
|
|
100
|
-
|
176
|
+
/// @inheritdoc IComponentService
|
177
|
+
function setLockedFromComponent(address componentAddress, bool locked)
|
101
178
|
external
|
102
179
|
virtual
|
180
|
+
onlyComponent(msg.sender)
|
103
181
|
{
|
104
|
-
|
105
|
-
|
106
|
-
|
182
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
183
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
184
|
+
}
|
107
185
|
|
108
|
-
|
109
|
-
|
110
|
-
|
186
|
+
function withdrawFees(Amount amount)
|
187
|
+
external
|
188
|
+
virtual
|
189
|
+
returns (Amount withdrawnAmount)
|
190
|
+
{
|
191
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
192
|
+
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
193
|
+
address componentWallet = info.tokenHandler.getWallet();
|
194
|
+
|
195
|
+
// determine withdrawn amount
|
196
|
+
withdrawnAmount = amount;
|
197
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
198
|
+
withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
|
199
|
+
} else if (withdrawnAmount.eqz()) {
|
200
|
+
revert ErrorComponentServiceWithdrawAmountIsZero();
|
201
|
+
} else {
|
202
|
+
Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
|
203
|
+
if (withdrawnAmount.gt(withdrawLimit)) {
|
204
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
205
|
+
}
|
206
|
+
}
|
111
207
|
|
208
|
+
// decrease fee counters by withdrawnAmount
|
209
|
+
_accountingService.decreaseComponentFees(instance.getInstanceStore(), componentNftId, withdrawnAmount);
|
210
|
+
|
211
|
+
// transfer amount to component owner
|
212
|
+
address componentOwner = getRegistry().ownerOf(componentNftId);
|
213
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
214
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
215
|
+
}
|
216
|
+
|
217
|
+
|
218
|
+
//-------- product ------------------------------------------------------//
|
219
|
+
|
220
|
+
function registerProduct(address productAddress)
|
221
|
+
external
|
222
|
+
virtual
|
223
|
+
nonReentrant()
|
224
|
+
onlyComponent(productAddress)
|
225
|
+
returns (NftId productNftId)
|
226
|
+
{
|
112
227
|
// register/create component setup
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
//
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
228
|
+
InstanceAdmin instanceAdmin;
|
229
|
+
InstanceStore instanceStore;
|
230
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
231
|
+
productAddress,
|
232
|
+
PRODUCT());
|
233
|
+
|
234
|
+
// get product
|
235
|
+
IProductComponent product = IProductComponent(productAddress);
|
236
|
+
|
237
|
+
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
238
|
+
// force initialization of linked components with empty values to
|
239
|
+
// ensure no components are linked upon initialization of the product
|
240
|
+
initialProductInfo.poolNftId = NftIdLib.zero();
|
241
|
+
initialProductInfo.distributionNftId = NftIdLib.zero();
|
242
|
+
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
243
|
+
|
244
|
+
// create info
|
245
|
+
instanceStore.createProduct(
|
246
|
+
productNftId,
|
247
|
+
initialProductInfo);
|
248
|
+
instanceStore.createFee(
|
249
|
+
productNftId,
|
250
|
+
product.getInitialFeeInfo());
|
251
|
+
|
252
|
+
// authorize
|
253
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
131
254
|
}
|
132
255
|
|
133
256
|
|
@@ -137,80 +260,66 @@ contract ComponentService is
|
|
137
260
|
)
|
138
261
|
external
|
139
262
|
virtual
|
263
|
+
nonReentrant()
|
140
264
|
{
|
141
|
-
(NftId productNftId
|
142
|
-
IComponents.
|
265
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
266
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
143
267
|
bool feesChanged = false;
|
144
268
|
|
145
269
|
// update product fee if required
|
146
|
-
if(!FeeLib.eq(
|
147
|
-
_logUpdateFee(productNftId, "ProductFee",
|
148
|
-
|
270
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
271
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
272
|
+
feeInfo.productFee = productFee;
|
149
273
|
feesChanged = true;
|
150
274
|
}
|
151
275
|
|
152
276
|
// update processing fee if required
|
153
|
-
if(!FeeLib.eq(
|
154
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
155
|
-
|
277
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
278
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
279
|
+
feeInfo.processingFee = processingFee;
|
156
280
|
feesChanged = true;
|
157
281
|
}
|
158
282
|
|
159
283
|
if(feesChanged) {
|
160
|
-
instance.getInstanceStore().
|
284
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
161
285
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
162
286
|
}
|
163
287
|
}
|
164
288
|
|
165
|
-
function increaseProductFees(
|
166
|
-
InstanceStore instanceStore,
|
167
|
-
NftId productNftId,
|
168
|
-
Amount feeAmount
|
169
|
-
)
|
170
|
-
external
|
171
|
-
virtual
|
172
|
-
// TODO re-enable once role granting is stable and fixed
|
173
|
-
// restricted()
|
174
|
-
{
|
175
|
-
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
176
|
-
}
|
177
|
-
|
178
|
-
|
179
|
-
function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
|
180
|
-
external
|
181
|
-
virtual
|
182
|
-
// TODO re-enable once role granting is stable and fixed
|
183
|
-
// restricted()
|
184
|
-
{
|
185
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
186
|
-
}
|
187
|
-
|
188
289
|
//-------- distribution -------------------------------------------------//
|
189
290
|
|
190
291
|
/// @dev registers the sending component as a distribution component
|
191
|
-
function
|
192
|
-
|
292
|
+
function _registerDistribution(address distributioAddress)
|
293
|
+
internal
|
193
294
|
virtual
|
295
|
+
nonReentrant()
|
296
|
+
returns (NftId distributionNftId)
|
194
297
|
{
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
298
|
+
// register/create component info
|
299
|
+
InstanceReader instanceReader;
|
300
|
+
InstanceAdmin instanceAdmin;
|
301
|
+
InstanceStore instanceStore;
|
302
|
+
NftId productNftId;
|
303
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
304
|
+
distributioAddress,
|
305
|
+
DISTRIBUTION());
|
306
|
+
|
307
|
+
// check product is still expecting a distribution registration
|
308
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
309
|
+
if (!productInfo.hasDistribution) {
|
310
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
311
|
+
}
|
312
|
+
if (productInfo.distributionNftId.gtz()) {
|
313
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
314
|
+
}
|
202
315
|
|
203
|
-
//
|
204
|
-
|
205
|
-
|
316
|
+
// set distribution in product info
|
317
|
+
productInfo.distributionNftId = distributionNftId;
|
318
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
206
319
|
|
207
|
-
//
|
208
|
-
|
209
|
-
|
210
|
-
DISTRIBUTION(),
|
211
|
-
DISTRIBUTION_OWNER_ROLE(),
|
212
|
-
roles,
|
213
|
-
selectors);
|
320
|
+
// authorize
|
321
|
+
instanceAdmin.initializeComponentAuthorization(
|
322
|
+
IInstanceLinkedComponent(distributioAddress));
|
214
323
|
}
|
215
324
|
|
216
325
|
|
@@ -221,117 +330,102 @@ contract ComponentService is
|
|
221
330
|
external
|
222
331
|
virtual
|
223
332
|
{
|
224
|
-
(NftId distributionNftId
|
225
|
-
(NftId productNftId, IComponents.
|
333
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
334
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
226
335
|
instance.getInstanceReader(), distributionNftId);
|
227
336
|
bool feesChanged = false;
|
228
337
|
|
229
338
|
// update distributino fee if required
|
230
|
-
if(!FeeLib.eq(
|
231
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
232
|
-
|
339
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
340
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
341
|
+
feeInfo.distributionFee = distributionFee;
|
233
342
|
feesChanged = true;
|
234
343
|
}
|
235
344
|
|
236
345
|
// update min distribution owner fee if required
|
237
|
-
if(!FeeLib.eq(
|
238
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
239
|
-
|
346
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
347
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
348
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
240
349
|
feesChanged = true;
|
241
350
|
}
|
242
351
|
|
243
352
|
if(feesChanged) {
|
244
|
-
instance.getInstanceStore().
|
353
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
245
354
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
246
355
|
}
|
247
356
|
}
|
248
357
|
|
249
|
-
function increaseDistributionBalance(
|
250
|
-
InstanceStore instanceStore,
|
251
|
-
NftId distributionNftId,
|
252
|
-
Amount amount,
|
253
|
-
Amount feeAmount
|
254
|
-
)
|
255
|
-
external
|
256
|
-
virtual
|
257
|
-
// TODO re-enable once role granting is stable and fixed
|
258
|
-
// restricted()
|
259
|
-
{
|
260
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
261
|
-
}
|
262
|
-
|
263
|
-
|
264
|
-
function decreaseDistributionBalance(
|
265
|
-
InstanceStore instanceStore,
|
266
|
-
NftId distributionNftId,
|
267
|
-
Amount amount,
|
268
|
-
Amount feeAmount
|
269
|
-
)
|
270
|
-
external
|
271
|
-
virtual
|
272
|
-
// TODO re-enable once role granting is stable and fixed
|
273
|
-
// restricted()
|
274
|
-
{
|
275
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
276
|
-
}
|
277
|
-
|
278
358
|
//-------- oracle -------------------------------------------------------//
|
279
359
|
|
280
|
-
function
|
281
|
-
|
360
|
+
function _registerOracle(address oracleAddress)
|
361
|
+
internal
|
282
362
|
virtual
|
363
|
+
returns (NftId oracleNftId)
|
283
364
|
{
|
284
|
-
address contractAddress = msg.sender;
|
285
|
-
RoleId[] memory roles = new RoleId[](0);
|
286
|
-
bytes4[][] memory selectors = new bytes4[][](0);
|
287
|
-
|
288
365
|
// register/create component setup
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
366
|
+
InstanceReader instanceReader;
|
367
|
+
InstanceAdmin instanceAdmin;
|
368
|
+
InstanceStore instanceStore;
|
369
|
+
NftId productNftId;
|
370
|
+
|
371
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
372
|
+
oracleAddress,
|
373
|
+
ORACLE());
|
374
|
+
|
375
|
+
// check product is still expecting an oracle registration
|
376
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
377
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
378
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
379
|
+
}
|
380
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
381
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
382
|
+
}
|
383
|
+
|
384
|
+
// update/add oracle to product info
|
385
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
386
|
+
productInfo.numberOfOracles++;
|
387
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
388
|
+
|
389
|
+
// authorize
|
390
|
+
instanceAdmin.initializeComponentAuthorization(
|
391
|
+
IInstanceLinkedComponent(oracleAddress));
|
299
392
|
}
|
300
393
|
|
301
394
|
//-------- pool ---------------------------------------------------------//
|
302
395
|
|
303
|
-
function
|
304
|
-
|
396
|
+
function _registerPool(address poolAddress)
|
397
|
+
internal
|
305
398
|
virtual
|
399
|
+
returns (NftId poolNftId)
|
306
400
|
{
|
307
|
-
address contractAddress = msg.sender;
|
308
|
-
RoleId[] memory roles = new RoleId[](2);
|
309
|
-
bytes4[][] memory selectors = new bytes4[][](2);
|
310
|
-
|
311
|
-
// authorizaion for pool owner
|
312
|
-
roles[0] = POOL_OWNER_ROLE();
|
313
|
-
selectors[0] = _createSelectors(IPoolComponent.setFees.selector);
|
314
|
-
|
315
|
-
// authorizaion for product service
|
316
|
-
roles[1] = POLICY_SERVICE_ROLE();
|
317
|
-
selectors[1] = _createSelectors(IPoolComponent.verifyApplication.selector);
|
318
|
-
|
319
401
|
// register/create component setup
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
402
|
+
InstanceReader instanceReader;
|
403
|
+
InstanceAdmin instanceAdmin;
|
404
|
+
InstanceStore instanceStore;
|
405
|
+
NftId productNftId;
|
406
|
+
|
407
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
408
|
+
poolAddress,
|
409
|
+
POOL());
|
410
|
+
|
411
|
+
// check product is still expecting a pool registration
|
412
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
413
|
+
if (productInfo.poolNftId.gtz()) {
|
414
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
415
|
+
}
|
330
416
|
|
331
417
|
// create info
|
418
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
332
419
|
instanceStore.createPool(
|
333
|
-
|
334
|
-
|
420
|
+
poolNftId,
|
421
|
+
pool.getInitialPoolInfo());
|
422
|
+
|
423
|
+
// update pool in product info
|
424
|
+
productInfo.poolNftId = poolNftId;
|
425
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
426
|
+
|
427
|
+
// authorize
|
428
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
335
429
|
}
|
336
430
|
|
337
431
|
|
@@ -343,188 +437,102 @@ contract ComponentService is
|
|
343
437
|
external
|
344
438
|
virtual
|
345
439
|
{
|
346
|
-
(NftId poolNftId
|
347
|
-
|
440
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
441
|
+
|
442
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
348
443
|
instance.getInstanceReader(), poolNftId);
|
349
444
|
bool feesChanged = false;
|
350
445
|
|
351
446
|
// update pool fee if required
|
352
|
-
if(!FeeLib.eq(
|
353
|
-
_logUpdateFee(productNftId, "PoolFee",
|
354
|
-
|
447
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
448
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
449
|
+
feeInfo.poolFee = poolFee;
|
355
450
|
feesChanged = true;
|
356
451
|
}
|
357
452
|
|
358
453
|
// update staking fee if required
|
359
|
-
if(!FeeLib.eq(
|
360
|
-
_logUpdateFee(productNftId, "StakingFee",
|
361
|
-
|
454
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
455
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
456
|
+
feeInfo.stakingFee = stakingFee;
|
362
457
|
feesChanged = true;
|
363
458
|
}
|
364
459
|
|
365
460
|
// update performance fee if required
|
366
|
-
if(!FeeLib.eq(
|
367
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
368
|
-
|
461
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
462
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
463
|
+
feeInfo.performanceFee = performanceFee;
|
369
464
|
feesChanged = true;
|
370
465
|
}
|
371
466
|
|
372
467
|
if(feesChanged) {
|
373
|
-
instance.getInstanceStore().
|
468
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
374
469
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
375
470
|
}
|
376
471
|
}
|
377
472
|
|
378
|
-
|
379
|
-
InstanceStore instanceStore,
|
380
|
-
NftId poolNftId,
|
381
|
-
Amount amount,
|
382
|
-
Amount feeAmount
|
383
|
-
)
|
384
|
-
public
|
385
|
-
virtual
|
386
|
-
// TODO re-enable once role granting is stable and fixed
|
387
|
-
// restricted()
|
388
|
-
{
|
389
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
390
|
-
}
|
391
|
-
|
392
|
-
function decreasePoolBalance(
|
393
|
-
InstanceStore instanceStore,
|
394
|
-
NftId poolNftId,
|
395
|
-
Amount amount,
|
396
|
-
Amount feeAmount
|
397
|
-
)
|
398
|
-
public
|
399
|
-
virtual
|
400
|
-
// TODO re-enable once role granting is stable and fixed
|
401
|
-
// restricted()
|
402
|
-
{
|
403
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
404
|
-
}
|
405
|
-
|
406
|
-
//-------- bundle -------------------------------------------------------//
|
407
|
-
|
408
|
-
function increaseBundleBalance(
|
409
|
-
InstanceStore instanceStore,
|
410
|
-
NftId bundleNftId,
|
411
|
-
Amount amount,
|
412
|
-
Amount feeAmount
|
413
|
-
)
|
414
|
-
external
|
415
|
-
virtual
|
416
|
-
// TODO re-enable once role granting is stable and fixed
|
417
|
-
// restricted()
|
418
|
-
{
|
419
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
420
|
-
}
|
421
|
-
|
422
|
-
function decreaseBundleBalance(
|
423
|
-
InstanceStore instanceStore,
|
424
|
-
NftId bundleNftId,
|
425
|
-
Amount amount,
|
426
|
-
Amount feeAmount
|
427
|
-
)
|
428
|
-
external
|
429
|
-
virtual
|
430
|
-
// TODO re-enable once role granting is stable and fixed
|
431
|
-
// restricted()
|
432
|
-
{
|
433
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
434
|
-
}
|
435
|
-
|
436
|
-
|
437
|
-
//-------- internal functions ------------------------------------------//
|
438
|
-
|
439
|
-
function _changeTargetBalance(
|
440
|
-
bool increase,
|
441
|
-
InstanceStore instanceStore,
|
442
|
-
NftId targetNftId,
|
443
|
-
Amount amount,
|
444
|
-
Amount feeAmount
|
445
|
-
)
|
446
|
-
internal
|
447
|
-
virtual
|
448
|
-
{
|
449
|
-
Amount totalAmount = amount + feeAmount;
|
450
|
-
|
451
|
-
if(increase) {
|
452
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
453
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
454
|
-
} else {
|
455
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
456
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
457
|
-
}
|
458
|
-
}
|
459
|
-
|
460
|
-
/// @dev registers the component represented by the provided address
|
473
|
+
/// @dev Registers the component represented by the provided address.
|
461
474
|
function _register(
|
462
475
|
address componentAddress, // address of component to register
|
463
|
-
ObjectType requiredType
|
464
|
-
RoleId requiredRole, // role required for comonent owner for registration
|
465
|
-
RoleId[] memory roles, // roles with write access to component
|
466
|
-
bytes4[][] memory selectors // authorized functions per role with write access
|
476
|
+
ObjectType requiredType // required type for component for registration
|
467
477
|
)
|
468
478
|
internal
|
469
479
|
virtual
|
470
480
|
returns (
|
471
481
|
InstanceReader instanceReader,
|
482
|
+
InstanceAdmin instanceAdmin,
|
472
483
|
InstanceStore instanceStore,
|
484
|
+
NftId parentNftId,
|
473
485
|
NftId componentNftId
|
474
486
|
)
|
475
487
|
{
|
488
|
+
NftId instanceNftId;
|
489
|
+
IInstance instance;
|
490
|
+
IInstanceLinkedComponent component;
|
491
|
+
address initialOwner;
|
492
|
+
|
476
493
|
(
|
477
|
-
|
478
|
-
|
479
|
-
|
494
|
+
instanceNftId,
|
495
|
+
instance,
|
496
|
+
parentNftId,
|
497
|
+
component,
|
498
|
+
initialOwner
|
480
499
|
) = _getAndVerifyRegisterableComponent(
|
500
|
+
getRegistry(),
|
481
501
|
componentAddress,
|
482
|
-
requiredType
|
483
|
-
requiredRole);
|
484
|
-
|
485
|
-
// register component with registry
|
486
|
-
componentNftId = _registryService.registerComponent(
|
487
|
-
component,
|
488
|
-
requiredType,
|
489
|
-
owner).nftId;
|
502
|
+
requiredType);
|
490
503
|
|
491
|
-
|
492
|
-
|
493
|
-
// save amended component info with instance
|
504
|
+
// get instance supporting contracts (as function return values)
|
494
505
|
instanceReader = instance.getInstanceReader();
|
506
|
+
instanceAdmin = instance.getInstanceAdmin();
|
495
507
|
instanceStore = instance.getInstanceStore();
|
496
508
|
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
component.getName(),
|
506
|
-
selectors,
|
507
|
-
roles);
|
508
|
-
}
|
509
|
+
// register with registry
|
510
|
+
if (requiredType == PRODUCT()) {
|
511
|
+
componentNftId = _registryService.registerProduct(
|
512
|
+
component, initialOwner).nftId;
|
513
|
+
} else {
|
514
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
515
|
+
component, requiredType, initialOwner).nftId;
|
516
|
+
}
|
509
517
|
|
518
|
+
// deploy and wire token handler
|
519
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
520
|
+
IERC20Metadata token = componentInfo.token;
|
521
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
522
|
+
address(getRegistry()),
|
523
|
+
address(component), // initially, component is its own wallet
|
524
|
+
address(token),
|
525
|
+
address(instanceAdmin.authority()));
|
526
|
+
|
527
|
+
// register component with instance
|
528
|
+
instanceStore.createComponent(
|
529
|
+
componentNftId,
|
530
|
+
componentInfo);
|
510
531
|
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
NftId componentNftId,
|
516
|
-
NftId productNftId
|
517
|
-
)
|
518
|
-
internal
|
519
|
-
{
|
520
|
-
// only link components that are registered
|
521
|
-
if(componentNftId.eqz()) {
|
522
|
-
return;
|
523
|
-
}
|
524
|
-
|
525
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
526
|
-
componentInfo.productNftId = productNftId;
|
527
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
532
|
+
// link component contract to nft id
|
533
|
+
component.linkToRegisteredNftId();
|
534
|
+
|
535
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
528
536
|
}
|
529
537
|
|
530
538
|
|
@@ -543,13 +551,7 @@ contract ComponentService is
|
|
543
551
|
}
|
544
552
|
|
545
553
|
|
546
|
-
function
|
547
|
-
selectors = new bytes4[](1);
|
548
|
-
selectors[0] = selector;
|
549
|
-
}
|
550
|
-
|
551
|
-
|
552
|
-
function _getLinkedProductInfo(
|
554
|
+
function _getLinkedFeeInfo(
|
553
555
|
InstanceReader instanceReader,
|
554
556
|
NftId componentNftId
|
555
557
|
)
|
@@ -557,61 +559,142 @@ contract ComponentService is
|
|
557
559
|
view
|
558
560
|
returns(
|
559
561
|
NftId productNftId,
|
560
|
-
IComponents.
|
562
|
+
IComponents.FeeInfo memory info
|
561
563
|
)
|
562
564
|
{
|
563
|
-
productNftId =
|
564
|
-
info = instanceReader.
|
565
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
566
|
+
info = instanceReader.getFeeInfo(productNftId);
|
565
567
|
}
|
566
568
|
|
567
569
|
|
568
|
-
/// @dev
|
569
|
-
///
|
570
|
-
/// - the
|
570
|
+
/// @dev Based on the provided component address required type the component
|
571
|
+
/// and related instance contract this function reverts iff:
|
572
|
+
/// - the sender is not registered
|
571
573
|
/// - the component contract does not support IInstanceLinkedComponent
|
572
574
|
/// - the component type does not match with the required type
|
573
|
-
/// - the
|
575
|
+
/// - the component has already been registered
|
574
576
|
function _getAndVerifyRegisterableComponent(
|
577
|
+
IRegistry registry,
|
575
578
|
address componentAddress,
|
576
|
-
ObjectType requiredType
|
577
|
-
RoleId requiredRole
|
579
|
+
ObjectType requiredType
|
578
580
|
)
|
579
581
|
internal
|
580
582
|
view
|
581
583
|
returns (
|
584
|
+
NftId instanceNftId,
|
582
585
|
IInstance instance,
|
586
|
+
NftId parentNftId,
|
583
587
|
IInstanceLinkedComponent component,
|
584
|
-
address
|
588
|
+
address initialOwner
|
585
589
|
)
|
586
590
|
{
|
587
|
-
// check
|
588
|
-
|
589
|
-
if(
|
590
|
-
revert
|
591
|
+
// check sender (instance or product) is registered
|
592
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
593
|
+
if (senderInfo.nftId.eqz()) {
|
594
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
591
595
|
}
|
592
596
|
|
597
|
+
// the sender is the parent of the component to be registered
|
598
|
+
// an instance caller wanting to register a product - or -
|
599
|
+
// a product caller wantint go register a distribution, oracle or pool
|
600
|
+
parentNftId = senderInfo.nftId;
|
601
|
+
|
593
602
|
// check component is of required type
|
603
|
+
component = IInstanceLinkedComponent(componentAddress);
|
594
604
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
595
605
|
if(info.objectType != requiredType) {
|
596
606
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
597
607
|
}
|
598
608
|
|
599
609
|
// check component has not already been registered
|
600
|
-
if (getRegistry().
|
610
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
601
611
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
602
612
|
}
|
603
613
|
|
604
|
-
// check
|
605
|
-
|
606
|
-
|
614
|
+
// check release matches
|
615
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
616
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
617
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
618
|
+
}
|
619
|
+
|
620
|
+
// check component belongs to same product cluster
|
621
|
+
// parent of product must be instance, parent of other componet types must be product
|
622
|
+
if (info.parentNftId != senderInfo.nftId) {
|
623
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
624
|
+
}
|
625
|
+
|
626
|
+
// verify parent is registered instance
|
627
|
+
if (requiredType == PRODUCT()) {
|
628
|
+
if (senderInfo.objectType != INSTANCE()) {
|
629
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
630
|
+
}
|
631
|
+
|
632
|
+
instanceNftId = senderInfo.nftId;
|
633
|
+
// verify parent is registered product
|
634
|
+
} else {
|
635
|
+
if (senderInfo.objectType != PRODUCT()) {
|
636
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
637
|
+
}
|
638
|
+
|
639
|
+
instanceNftId = senderInfo.parentNftId;
|
640
|
+
}
|
641
|
+
|
642
|
+
// get initial owner and instance
|
643
|
+
initialOwner = info.initialOwner;
|
644
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
645
|
+
}
|
646
|
+
|
647
|
+
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
648
|
+
instanceAdmin.setTargetLocked(componentAddress, locked);
|
649
|
+
}
|
650
|
+
|
651
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
652
|
+
internal
|
653
|
+
view
|
654
|
+
returns (
|
655
|
+
NftId componentNftId,
|
656
|
+
IInstance instance
|
657
|
+
)
|
658
|
+
{
|
659
|
+
return _getAndVerifyComponent(expectedType, true); // only active
|
660
|
+
}
|
607
661
|
|
608
|
-
|
609
|
-
|
610
|
-
|
662
|
+
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
663
|
+
internal
|
664
|
+
view
|
665
|
+
returns (
|
666
|
+
NftId componentNftId,
|
667
|
+
IInstance instance
|
668
|
+
)
|
669
|
+
{
|
670
|
+
IRegistry.ObjectInfo memory info;
|
671
|
+
address instanceAddress;
|
672
|
+
|
673
|
+
if (expectedType != COMPONENT()) {
|
674
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
675
|
+
getRegistry(),
|
676
|
+
msg.sender, // caller
|
677
|
+
expectedType,
|
678
|
+
isActive);
|
679
|
+
} else {
|
680
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
681
|
+
getRegistry(),
|
682
|
+
msg.sender,
|
683
|
+
isActive);
|
611
684
|
}
|
685
|
+
|
686
|
+
// get component nft id and instance
|
687
|
+
componentNftId = info.nftId;
|
688
|
+
instance = IInstance(instanceAddress);
|
612
689
|
}
|
613
690
|
|
614
691
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
615
692
|
return COMPONENT();
|
616
693
|
}
|
694
|
+
|
695
|
+
function _checkSupportsInterface(address component) internal view {
|
696
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
697
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
698
|
+
}
|
699
|
+
}
|
617
700
|
}
|