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