@etherisc/gif-next 0.0.2-b7d6ed2-016 → 0.0.2-b7e6198-021
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 +12 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +100 -32
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +80 -34
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +52 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +267 -97
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +652 -36
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +222 -47
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +175 -27
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +85 -12
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +52 -17
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +221 -60
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +20 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -139
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +129 -67
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +19 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +228 -15
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +81 -42
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +220 -59
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +102 -51
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +220 -59
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +74 -23
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +220 -59
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +34 -15
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +85 -50
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +220 -59
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +264 -68
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +220 -59
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +336 -33
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +277 -3
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +349 -74
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +608 -295
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +242 -56
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -290
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +303 -29
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +69 -31
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +148 -84
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +23 -4
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +234 -56
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +83 -38
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +85 -39
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +37 -26
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +220 -59
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +294 -117
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +113 -47
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +180 -27
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +19 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +19 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +88 -22
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +324 -65
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +110 -52
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +216 -59
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +82 -32
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +220 -59
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +102 -64
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -0
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +508 -18
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -61
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +93 -72
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -39
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +19 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +70 -32
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +18 -7
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +56 -45
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +380 -238
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +261 -65
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +65 -27
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +384 -186
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +131 -79
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -174
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +98 -52
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +76 -41
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +84 -105
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +6 -6
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -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 +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +6 -6
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1383 -117
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +94 -114
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1473 -176
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +73 -72
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +113 -58
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -150
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +128 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +73 -43
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1620 -820
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +142 -80
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -2
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- 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 +6 -6
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -17
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +15 -3
- package/contracts/accounting/IAccountingService.sol +2 -0
- package/contracts/authorization/AccessAdmin.sol +264 -188
- package/contracts/authorization/AccessAdminLib.sol +222 -9
- package/contracts/authorization/Authorization.sol +38 -234
- package/contracts/authorization/IAccess.sol +14 -4
- package/contracts/authorization/IAccessAdmin.sol +19 -45
- package/contracts/authorization/IAuthorization.sol +3 -57
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +248 -34
- package/contracts/distribution/BasicDistribution.sol +2 -2
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +7 -4
- package/contracts/distribution/DistributionService.sol +98 -35
- package/contracts/distribution/IDistributionComponent.sol +3 -1
- package/contracts/distribution/IDistributionService.sol +20 -8
- package/contracts/examples/fire/FireProduct.sol +6 -6
- package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
- package/contracts/instance/IInstance.sol +44 -5
- package/contracts/instance/IInstanceService.sol +35 -6
- package/contracts/instance/Instance.sol +86 -43
- package/contracts/instance/InstanceAdmin.sol +162 -229
- package/contracts/instance/InstanceAuthorizationV3.sol +60 -29
- package/contracts/instance/InstanceReader.sol +371 -389
- package/contracts/instance/InstanceService.sol +123 -82
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/oracle/BasicOracle.sol +1 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/Oracle.sol +2 -2
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +3 -14
- package/contracts/pool/BasicPoolAuthorization.sol +10 -5
- package/contracts/pool/BundleService.sol +34 -43
- package/contracts/pool/IBundleService.sol +14 -13
- package/contracts/pool/IPoolService.sol +7 -2
- package/contracts/pool/Pool.sol +4 -14
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +40 -181
- package/contracts/product/ApplicationService.sol +62 -9
- package/contracts/product/BasicProduct.sol +1 -1
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +56 -58
- package/contracts/product/IApplicationService.sol +21 -2
- package/contracts/product/IClaimService.sol +5 -4
- package/contracts/product/IPolicyService.sol +9 -2
- package/contracts/product/IRiskService.sol +18 -3
- package/contracts/product/PolicyService.sol +31 -50
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +22 -25
- package/contracts/product/Product.sol +38 -12
- package/contracts/product/RiskService.sol +48 -12
- package/contracts/registry/IRegistry.sol +11 -9
- package/contracts/registry/Registry.sol +15 -9
- package/contracts/registry/RegistryAdmin.sol +33 -100
- package/contracts/registry/RegistryAuthorization.sol +121 -52
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +42 -100
- package/contracts/registry/ReleaseRegistry.sol +20 -12
- package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
- package/contracts/registry/TokenRegistry.sol +54 -53
- package/contracts/shared/Component.sol +6 -2
- package/contracts/shared/ComponentService.sol +234 -255
- package/contracts/shared/ContractLib.sol +106 -75
- package/contracts/shared/IComponent.sol +1 -1
- package/contracts/shared/IComponentService.sol +12 -13
- package/contracts/shared/IKeyValueStore.sol +1 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InstanceLinkedComponent.sol +4 -5
- package/contracts/shared/KeyValueStore.sol +3 -3
- package/contracts/shared/NftOwnable.sol +3 -1
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Service.sol +6 -4
- package/contracts/staking/IStaking.sol +258 -70
- package/contracts/staking/IStakingService.sol +39 -84
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +467 -215
- package/contracts/staking/StakingLib.sol +38 -124
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +62 -71
- package/contracts/staking/StakingService.sol +42 -185
- package/contracts/staking/StakingServiceManager.sol +1 -0
- package/contracts/staking/StakingStore.sol +1093 -331
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +15 -15
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +16 -3
- package/contracts/type/RoleId.sol +57 -59
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -2
- package/contracts/type/UFixed.sol +1 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +15 -3
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -4,7 +4,6 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
|
-
import {IComponent} from "../shared/IComponent.sol";
|
8
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
9
8
|
import {IComponentService} from "./IComponentService.sol";
|
10
9
|
import {IInstance} from "../instance/IInstance.sol";
|
@@ -12,24 +11,24 @@ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
|
12
11
|
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
13
12
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
14
13
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
15
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
16
14
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
17
15
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
18
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
19
16
|
import {IRegistry} from "../registry/IRegistry.sol";
|
20
17
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
18
|
+
import {IStaking} from "../staking/IStaking.sol";
|
19
|
+
import {IStakingService} from "../staking/IStakingService.sol";
|
21
20
|
|
22
21
|
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
23
22
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
23
|
+
import {ChainIdLib} from "../type/ChainId.sol";
|
24
24
|
import {ContractLib} from "../shared/ContractLib.sol";
|
25
25
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
26
26
|
import {KEEP_STATE} from "../type/StateId.sol";
|
27
27
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
28
|
-
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
28
|
+
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
29
29
|
import {Service} from "../shared/Service.sol";
|
30
30
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
31
31
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
32
|
-
import {VersionPart} from "../type/Version.sol";
|
33
32
|
|
34
33
|
|
35
34
|
contract ComponentService is
|
@@ -41,32 +40,7 @@ contract ComponentService is
|
|
41
40
|
|
42
41
|
IAccountingService private _accountingService;
|
43
42
|
IRegistryService private _registryService;
|
44
|
-
|
45
|
-
|
46
|
-
modifier onlyComponent(address component) {
|
47
|
-
_checkSupportsInterface(component);
|
48
|
-
_;
|
49
|
-
}
|
50
|
-
|
51
|
-
modifier onlyInstance() {
|
52
|
-
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
53
|
-
if (instanceNftId.eqz()) {
|
54
|
-
revert ErrorComponentServiceNotRegistered(msg.sender);
|
55
|
-
}
|
56
|
-
|
57
|
-
ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
|
58
|
-
if (objectType != INSTANCE()) {
|
59
|
-
revert ErrorComponentServiceNotInstance(msg.sender, objectType);
|
60
|
-
}
|
61
|
-
|
62
|
-
VersionPart instanceVersion = IInstance(msg.sender).getRelease();
|
63
|
-
if (instanceVersion != getVersion().toMajorPart()) {
|
64
|
-
revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
|
65
|
-
}
|
66
|
-
|
67
|
-
_;
|
68
|
-
}
|
69
|
-
|
43
|
+
IStaking private _staking;
|
70
44
|
|
71
45
|
function _initialize(
|
72
46
|
address owner,
|
@@ -85,63 +59,74 @@ contract ComponentService is
|
|
85
59
|
|
86
60
|
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
87
61
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
88
|
-
|
62
|
+
_staking = IStakingService(_getServiceAddress(STAKING())).getStaking();
|
89
63
|
|
90
64
|
_registerInterface(type(IComponentService).interfaceId);
|
91
65
|
}
|
92
66
|
|
93
67
|
//-------- component ----------------------------------------------------//
|
94
68
|
|
95
|
-
|
69
|
+
/// @inheritdoc IComponentService
|
70
|
+
function registerComponent(address componentAddress)
|
96
71
|
external
|
97
72
|
virtual
|
98
|
-
|
73
|
+
restricted()
|
99
74
|
returns (NftId componentNftId)
|
100
75
|
{
|
101
|
-
//
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
if (componentType == POOL()) {
|
107
|
-
return _registerPool(component, address(productComponent.getToken()));
|
108
|
-
}
|
109
|
-
if (componentType == DISTRIBUTION()) {
|
110
|
-
return _registerDistribution(component, address(productComponent.getToken()));
|
76
|
+
// checks
|
77
|
+
// check sender is registered product
|
78
|
+
IRegistry registry = getRegistry();
|
79
|
+
if (!registry.isObjectType(msg.sender, PRODUCT())) {
|
80
|
+
revert ErrorComponentServiceCallerNotProduct(msg.sender);
|
111
81
|
}
|
112
|
-
|
113
|
-
|
82
|
+
|
83
|
+
// check provided address is product contract
|
84
|
+
if (!_isInstanceLinkedComponent(componentAddress)) {
|
85
|
+
revert ErrorComponentServiceNotComponent(componentAddress);
|
114
86
|
}
|
115
87
|
|
116
|
-
|
117
|
-
|
88
|
+
NftId productNftId = registry.getNftIdForAddress(msg.sender);
|
89
|
+
IInstance instance = IInstance(
|
90
|
+
registry.getObjectAddress(
|
91
|
+
registry.getParentNftId(productNftId)));
|
92
|
+
|
93
|
+
componentNftId = _verifyAndRegister(
|
94
|
+
instance,
|
95
|
+
componentAddress,
|
96
|
+
productNftId, // product is parent of component to be registered
|
97
|
+
address(0)); // token will be inhereited from product
|
118
98
|
}
|
119
99
|
|
100
|
+
|
101
|
+
/// @inheritdoc IComponentService
|
120
102
|
function approveTokenHandler(
|
121
103
|
IERC20Metadata token,
|
122
104
|
Amount amount
|
123
105
|
)
|
124
106
|
external
|
125
107
|
virtual
|
108
|
+
restricted()
|
126
109
|
{
|
127
110
|
// checks
|
128
|
-
(NftId componentNftId, IInstance instance) =
|
129
|
-
TokenHandler tokenHandler = instance.getInstanceReader().
|
130
|
-
componentNftId)
|
111
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
112
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
113
|
+
componentNftId);
|
131
114
|
|
132
115
|
// effects
|
133
116
|
tokenHandler.approve(token, amount);
|
134
117
|
}
|
135
118
|
|
136
119
|
|
120
|
+
/// @inheritdoc IComponentService
|
137
121
|
function setWallet(address newWallet)
|
138
122
|
external
|
139
123
|
virtual
|
124
|
+
restricted()
|
140
125
|
{
|
141
126
|
// checks
|
142
|
-
(NftId componentNftId, IInstance instance) =
|
143
|
-
TokenHandler tokenHandler = instance.getInstanceReader().
|
144
|
-
componentNftId)
|
127
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
128
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
129
|
+
componentNftId);
|
145
130
|
|
146
131
|
// effects
|
147
132
|
tokenHandler.setWallet(newWallet);
|
@@ -159,8 +144,10 @@ contract ComponentService is
|
|
159
144
|
instance.getInstanceAdmin().setComponentLocked(
|
160
145
|
component,
|
161
146
|
locked);
|
147
|
+
emit LogComponentServiceComponentLocked(component, locked);
|
162
148
|
}
|
163
149
|
|
150
|
+
|
164
151
|
/// @inheritdoc IComponentService
|
165
152
|
function withdrawFees(Amount amount)
|
166
153
|
external
|
@@ -169,7 +156,7 @@ contract ComponentService is
|
|
169
156
|
returns (Amount withdrawnAmount)
|
170
157
|
{
|
171
158
|
// checks
|
172
|
-
(NftId componentNftId, IInstance instance) =
|
159
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
173
160
|
InstanceReader instanceReader = instance.getInstanceReader();
|
174
161
|
|
175
162
|
// determine withdrawn amount
|
@@ -214,51 +201,70 @@ contract ComponentService is
|
|
214
201
|
|
215
202
|
//-------- product ------------------------------------------------------//
|
216
203
|
|
204
|
+
/// @inheritdoc IComponentService
|
217
205
|
function registerProduct(address productAddress, address token)
|
218
206
|
external
|
219
207
|
virtual
|
208
|
+
restricted()
|
220
209
|
nonReentrant()
|
221
|
-
onlyComponent(productAddress)
|
222
210
|
returns (NftId productNftId)
|
223
211
|
{
|
224
|
-
//
|
225
|
-
|
226
|
-
|
227
|
-
(,
|
228
|
-
|
229
|
-
|
212
|
+
// checks
|
213
|
+
// check sender is registered instance
|
214
|
+
IRegistry registry = getRegistry();
|
215
|
+
if (!registry.isObjectType(msg.sender, INSTANCE())) {
|
216
|
+
revert ErrorComponentServiceCallerNotInstance(msg.sender);
|
217
|
+
}
|
218
|
+
|
219
|
+
// check provided address is product contract
|
220
|
+
if (!_isProduct(productAddress)) {
|
221
|
+
revert ErrorComponentServiceNotProduct(productAddress);
|
222
|
+
}
|
223
|
+
|
224
|
+
IInstance instance = IInstance(msg.sender);
|
225
|
+
NftId instanceNftId = registry.getNftIdForAddress(msg.sender);
|
226
|
+
productNftId = _verifyAndRegister(
|
227
|
+
instance,
|
228
|
+
productAddress,
|
229
|
+
instanceNftId, // instance is parent of product to be registered
|
230
230
|
token);
|
231
231
|
|
232
|
-
//
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
// ensure no components are linked upon initialization of the product
|
238
|
-
initialProductInfo.poolNftId = NftIdLib.zero();
|
239
|
-
initialProductInfo.distributionNftId = NftIdLib.zero();
|
240
|
-
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
232
|
+
// add product specific token for product to staking
|
233
|
+
_staking.addTargetToken(
|
234
|
+
instanceNftId,
|
235
|
+
token);
|
236
|
+
}
|
241
237
|
|
242
|
-
// create info
|
243
|
-
instanceStore.createProduct(
|
244
|
-
productNftId,
|
245
|
-
initialProductInfo);
|
246
238
|
|
247
|
-
|
248
|
-
|
249
|
-
|
239
|
+
function _isProduct(address target) internal view virtual returns (bool) {
|
240
|
+
if (!_isInstanceLinkedComponent(target)) {
|
241
|
+
return false;
|
242
|
+
}
|
243
|
+
|
244
|
+
return IInstanceLinkedComponent(target).getInitialInfo().objectType == PRODUCT();
|
245
|
+
}
|
246
|
+
|
247
|
+
|
248
|
+
function _isInstanceLinkedComponent(address target) internal view virtual returns (bool) {
|
249
|
+
if (!ContractLib.isContract(target)) {
|
250
|
+
return false;
|
251
|
+
}
|
252
|
+
|
253
|
+
return ContractLib.supportsInterface(target, type(IInstanceLinkedComponent).interfaceId);
|
250
254
|
}
|
251
255
|
|
252
256
|
|
257
|
+
/// @inheritdoc IComponentService
|
253
258
|
function setProductFees(
|
254
259
|
Fee memory productFee, // product fee on net premium
|
255
260
|
Fee memory processingFee // product fee on payout amounts
|
256
261
|
)
|
257
262
|
external
|
258
263
|
virtual
|
264
|
+
restricted()
|
259
265
|
nonReentrant()
|
260
266
|
{
|
261
|
-
(NftId productNftId, IInstance instance) =
|
267
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
|
262
268
|
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
263
269
|
bool feesChanged = false;
|
264
270
|
|
@@ -282,27 +288,48 @@ contract ComponentService is
|
|
282
288
|
}
|
283
289
|
}
|
284
290
|
|
291
|
+
|
292
|
+
function _createProduct(
|
293
|
+
InstanceStore instanceStore,
|
294
|
+
NftId productNftId,
|
295
|
+
address productAddress
|
296
|
+
)
|
297
|
+
internal
|
298
|
+
virtual
|
299
|
+
{
|
300
|
+
// create product in instance instanceStore
|
301
|
+
IProductComponent product = IProductComponent(productAddress);
|
302
|
+
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
303
|
+
// force initialization of linked components with empty values to
|
304
|
+
// ensure no components are linked upon initialization of the product
|
305
|
+
initialProductInfo.poolNftId = NftIdLib.zero();
|
306
|
+
initialProductInfo.distributionNftId = NftIdLib.zero();
|
307
|
+
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
308
|
+
|
309
|
+
// create info
|
310
|
+
instanceStore.createProduct(
|
311
|
+
productNftId,
|
312
|
+
initialProductInfo);
|
313
|
+
|
314
|
+
instanceStore.createFee(
|
315
|
+
productNftId,
|
316
|
+
product.getInitialFeeInfo());
|
317
|
+
}
|
318
|
+
|
285
319
|
//-------- distribution -------------------------------------------------//
|
286
320
|
|
287
321
|
/// @dev registers the sending component as a distribution component
|
288
|
-
function
|
322
|
+
function _createDistribution(
|
323
|
+
InstanceStore instanceStore,
|
324
|
+
NftId productNftId,
|
325
|
+
NftId distributionNftId,
|
326
|
+
IComponents.ProductInfo memory productInfo
|
327
|
+
)
|
289
328
|
internal
|
290
329
|
virtual
|
291
330
|
nonReentrant()
|
292
|
-
returns (NftId distributionNftId)
|
293
331
|
{
|
294
|
-
// register/create component info
|
295
|
-
InstanceReader instanceReader;
|
296
|
-
InstanceAdmin instanceAdmin;
|
297
|
-
InstanceStore instanceStore;
|
298
|
-
NftId productNftId;
|
299
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
300
|
-
distributioAddress,
|
301
|
-
DISTRIBUTION(),
|
302
|
-
token);
|
303
|
-
|
304
332
|
// check product is still expecting a distribution registration
|
305
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
306
333
|
if (!productInfo.hasDistribution) {
|
307
334
|
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
308
335
|
}
|
@@ -322,8 +349,9 @@ contract ComponentService is
|
|
322
349
|
)
|
323
350
|
external
|
324
351
|
virtual
|
352
|
+
restricted()
|
325
353
|
{
|
326
|
-
(NftId distributionNftId, IInstance instance) =
|
354
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyComponent(DISTRIBUTION(), true);
|
327
355
|
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
328
356
|
instance.getInstanceReader(), distributionNftId);
|
329
357
|
bool feesChanged = false;
|
@@ -350,24 +378,16 @@ contract ComponentService is
|
|
350
378
|
|
351
379
|
//-------- oracle -------------------------------------------------------//
|
352
380
|
|
353
|
-
function
|
381
|
+
function _createOracle(
|
382
|
+
InstanceStore instanceStore,
|
383
|
+
NftId productNftId,
|
384
|
+
NftId oracleNftId,
|
385
|
+
IComponents.ProductInfo memory productInfo
|
386
|
+
)
|
354
387
|
internal
|
355
388
|
virtual
|
356
|
-
returns (NftId oracleNftId)
|
357
389
|
{
|
358
|
-
// register/create component setup
|
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
|
-
token);
|
368
|
-
|
369
390
|
// check product is still expecting an oracle registration
|
370
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
371
391
|
if (productInfo.expectedNumberOfOracles == 0) {
|
372
392
|
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
373
393
|
}
|
@@ -383,30 +403,24 @@ contract ComponentService is
|
|
383
403
|
|
384
404
|
//-------- pool ---------------------------------------------------------//
|
385
405
|
|
386
|
-
function
|
406
|
+
function _createPool(
|
407
|
+
InstanceStore instanceStore,
|
408
|
+
NftId productNftId,
|
409
|
+
NftId poolNftId,
|
410
|
+
address componentAddress,
|
411
|
+
IComponents.ProductInfo memory productInfo
|
412
|
+
)
|
387
413
|
internal
|
388
414
|
virtual
|
389
|
-
returns (NftId poolNftId)
|
390
415
|
{
|
391
|
-
// register/create component setup
|
392
|
-
InstanceReader instanceReader;
|
393
|
-
InstanceAdmin instanceAdmin;
|
394
|
-
InstanceStore instanceStore;
|
395
|
-
NftId productNftId;
|
396
|
-
|
397
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
398
|
-
poolAddress,
|
399
|
-
POOL(),
|
400
|
-
token);
|
401
|
-
|
402
416
|
// check product is still expecting a pool registration
|
403
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
417
|
+
//IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
404
418
|
if (productInfo.poolNftId.gtz()) {
|
405
419
|
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
406
420
|
}
|
407
421
|
|
408
422
|
// create info
|
409
|
-
IPoolComponent pool = IPoolComponent(
|
423
|
+
IPoolComponent pool = IPoolComponent(componentAddress);
|
410
424
|
instanceStore.createPool(
|
411
425
|
poolNftId,
|
412
426
|
pool.getInitialPoolInfo());
|
@@ -424,8 +438,9 @@ contract ComponentService is
|
|
424
438
|
)
|
425
439
|
external
|
426
440
|
virtual
|
441
|
+
restricted()
|
427
442
|
{
|
428
|
-
(NftId poolNftId, IInstance instance) =
|
443
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
|
429
444
|
|
430
445
|
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
431
446
|
instance.getInstanceReader(), poolNftId);
|
@@ -458,86 +473,109 @@ contract ComponentService is
|
|
458
473
|
}
|
459
474
|
}
|
460
475
|
|
476
|
+
|
461
477
|
/// @dev Registers the component represented by the provided address.
|
462
|
-
|
463
|
-
|
464
|
-
|
478
|
+
/// The caller must ensure componentAddress is IInstanceLinkedComponent.
|
479
|
+
function _verifyAndRegister(
|
480
|
+
IInstance instance,
|
481
|
+
address componentAddress,
|
482
|
+
NftId parentNftId,
|
465
483
|
address token
|
466
484
|
)
|
467
485
|
internal
|
468
486
|
virtual
|
469
|
-
returns (
|
470
|
-
InstanceReader instanceReader,
|
471
|
-
InstanceAdmin instanceAdmin,
|
472
|
-
InstanceStore instanceStore,
|
473
|
-
NftId parentNftId,
|
474
|
-
NftId componentNftId
|
475
|
-
)
|
487
|
+
returns (NftId componentNftId)
|
476
488
|
{
|
477
|
-
NftId instanceNftId;
|
478
|
-
IInstance instance;
|
479
|
-
IInstanceLinkedComponent component;
|
480
|
-
address initialOwner;
|
481
|
-
|
482
489
|
(
|
483
|
-
|
484
|
-
|
485
|
-
parentNftId,
|
486
|
-
component,
|
487
|
-
initialOwner
|
490
|
+
IInstanceLinkedComponent component,
|
491
|
+
IRegistry.ObjectInfo memory objectInfo // initial component info
|
488
492
|
) = _getAndVerifyRegisterableComponent(
|
489
|
-
getRegistry(),
|
490
493
|
componentAddress,
|
491
|
-
|
494
|
+
parentNftId);
|
492
495
|
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
token,
|
498
|
-
block.chainid,
|
499
|
-
AccessManagerCloneable(authority()).getRelease())
|
500
|
-
) {
|
501
|
-
revert ErrorComponentServiceTokenInvalid(token);
|
502
|
-
}
|
503
|
-
}
|
504
|
-
|
505
|
-
// get instance supporting contracts (as function return values)
|
506
|
-
instanceReader = instance.getInstanceReader();
|
507
|
-
instanceAdmin = instance.getInstanceAdmin();
|
508
|
-
instanceStore = instance.getInstanceStore();
|
496
|
+
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
497
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
498
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
499
|
+
ObjectType componentType = objectInfo.objectType;
|
509
500
|
|
510
|
-
|
511
|
-
|
501
|
+
if(componentType == PRODUCT()) {
|
502
|
+
// register product with registry
|
512
503
|
componentNftId = _registryService.registerProduct(
|
513
|
-
component,
|
504
|
+
component,
|
505
|
+
objectInfo.initialOwner).nftId;
|
506
|
+
|
507
|
+
// create product info in instance store
|
508
|
+
_createProduct(instanceStore, componentNftId, componentAddress);
|
514
509
|
} else {
|
510
|
+
// register non product component with registry
|
515
511
|
componentNftId = _registryService.registerProductLinkedComponent(
|
516
|
-
component,
|
512
|
+
component,
|
513
|
+
objectInfo.objectType,
|
514
|
+
objectInfo.initialOwner).nftId;
|
515
|
+
|
516
|
+
// create non product component info in instance store
|
517
|
+
NftId productNftId = parentNftId;
|
518
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
519
|
+
if(componentType == POOL()) {
|
520
|
+
_createPool(instanceStore, productNftId, componentNftId, componentAddress, productInfo);
|
521
|
+
} else if(componentType == DISTRIBUTION()) {
|
522
|
+
_createDistribution(instanceStore, productNftId, componentNftId, productInfo);
|
523
|
+
} else if(componentType == ORACLE()) {
|
524
|
+
_createOracle(instanceStore, productNftId, componentNftId, productInfo);
|
525
|
+
} else {
|
526
|
+
revert ErrorComponentServiceComponentTypeNotSupported(componentAddress, componentType);
|
527
|
+
}
|
528
|
+
|
529
|
+
// get product's token
|
530
|
+
token = address(instanceReader.getTokenHandler(productNftId).TOKEN());
|
517
531
|
}
|
518
532
|
|
533
|
+
_checkToken(instance, token);
|
534
|
+
|
519
535
|
// deploy and wire token handler
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
componentInfo);
|
532
|
-
}
|
536
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
537
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
538
|
+
address(getRegistry()),
|
539
|
+
address(component), // initially, component is its own wallet
|
540
|
+
token,
|
541
|
+
instanceAdmin.authority());
|
542
|
+
|
543
|
+
// register component with instance
|
544
|
+
instanceStore.createComponent(
|
545
|
+
componentNftId,
|
546
|
+
componentInfo);
|
533
547
|
|
534
548
|
// link component contract to nft id
|
535
549
|
component.linkToRegisteredNftId();
|
536
550
|
|
537
551
|
// authorize
|
538
|
-
instanceAdmin.initializeComponentAuthorization(componentAddress,
|
552
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
|
539
553
|
|
540
|
-
emit LogComponentServiceRegistered(
|
554
|
+
emit LogComponentServiceRegistered(
|
555
|
+
instance.getNftId(),
|
556
|
+
componentNftId,
|
557
|
+
componentType,
|
558
|
+
address(component),
|
559
|
+
token,
|
560
|
+
objectInfo.initialOwner);
|
561
|
+
}
|
562
|
+
|
563
|
+
|
564
|
+
function _checkToken(IInstance instance, address token)
|
565
|
+
internal
|
566
|
+
view
|
567
|
+
{
|
568
|
+
if (! instance.isTokenRegistryDisabled()) {
|
569
|
+
// check if provided token is whitelisted and active
|
570
|
+
if (!ContractLib.isActiveToken(
|
571
|
+
getRegistry().getTokenRegistryAddress(),
|
572
|
+
ChainIdLib.current(),
|
573
|
+
token,
|
574
|
+
AccessManagerCloneable(authority()).getRelease())
|
575
|
+
) {
|
576
|
+
revert ErrorComponentServiceTokenInvalid(token);
|
577
|
+
}
|
578
|
+
}
|
541
579
|
}
|
542
580
|
|
543
581
|
|
@@ -574,98 +612,44 @@ contract ComponentService is
|
|
574
612
|
|
575
613
|
/// @dev Based on the provided component address required type the component
|
576
614
|
/// and related instance contract this function reverts iff:
|
577
|
-
/// - the
|
578
|
-
/// - the component
|
579
|
-
/// - the component type does not match with the required type
|
615
|
+
/// - the component parent does not match with the required parent
|
616
|
+
/// - the component release does not match with the service release
|
580
617
|
/// - the component has already been registered
|
581
618
|
function _getAndVerifyRegisterableComponent(
|
582
|
-
IRegistry registry,
|
583
619
|
address componentAddress,
|
584
|
-
|
620
|
+
NftId requiredParent
|
585
621
|
)
|
586
622
|
internal
|
587
623
|
view
|
588
624
|
returns (
|
589
|
-
NftId instanceNftId,
|
590
|
-
IInstance instance,
|
591
|
-
NftId parentNftId,
|
592
625
|
IInstanceLinkedComponent component,
|
593
|
-
|
626
|
+
IRegistry.ObjectInfo memory info
|
594
627
|
)
|
595
628
|
{
|
596
|
-
// check sender (instance or product) is registered
|
597
|
-
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
598
|
-
if (senderInfo.nftId.eqz()) {
|
599
|
-
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
600
|
-
}
|
601
|
-
|
602
|
-
// the sender is the parent of the component to be registered
|
603
|
-
// an instance caller wanting to register a product - or -
|
604
|
-
// a product caller wantint go register a distribution, oracle or pool
|
605
|
-
parentNftId = senderInfo.nftId;
|
606
|
-
|
607
|
-
// check component is of required type
|
608
629
|
component = IInstanceLinkedComponent(componentAddress);
|
609
|
-
|
610
|
-
if(info.objectType != requiredType) {
|
611
|
-
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
612
|
-
}
|
613
|
-
|
614
|
-
// check component has not already been registered
|
615
|
-
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
616
|
-
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
617
|
-
}
|
630
|
+
info = component.getInitialInfo();
|
618
631
|
|
619
|
-
// component
|
620
|
-
|
621
|
-
|
622
|
-
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), getRelease());
|
623
|
-
// component release matches parent release
|
624
|
-
} else if (component.getRelease() != IRegisterable(parentAddress).getRelease()){
|
625
|
-
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
632
|
+
// check component parent
|
633
|
+
if(info.parentNftId != requiredParent) {
|
634
|
+
revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
|
626
635
|
}
|
627
636
|
|
628
|
-
// check component
|
629
|
-
|
630
|
-
|
631
|
-
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
637
|
+
// check component release (must match with service release)
|
638
|
+
if(component.getRelease() != getRelease()) {
|
639
|
+
revert ErrorComponentServiceComponentReleaseMismatch(componentAddress, getRelease(), component.getRelease());
|
632
640
|
}
|
633
641
|
|
634
|
-
//
|
635
|
-
if (
|
636
|
-
|
637
|
-
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
638
|
-
}
|
639
|
-
|
640
|
-
instanceNftId = senderInfo.nftId;
|
641
|
-
// verify parent is registered product
|
642
|
-
} else {
|
643
|
-
if (senderInfo.objectType != PRODUCT()) {
|
644
|
-
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
645
|
-
}
|
646
|
-
|
647
|
-
instanceNftId = senderInfo.parentNftId;
|
642
|
+
// check component has not already been registered
|
643
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
644
|
+
revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
|
648
645
|
}
|
649
|
-
|
650
|
-
// get initial owner and instance
|
651
|
-
initialOwner = info.initialOwner;
|
652
|
-
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
653
646
|
}
|
654
647
|
|
648
|
+
|
655
649
|
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
656
650
|
instanceAdmin.setTargetLocked(componentAddress, locked);
|
657
651
|
}
|
658
652
|
|
659
|
-
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
660
|
-
internal
|
661
|
-
view
|
662
|
-
returns (
|
663
|
-
NftId componentNftId,
|
664
|
-
IInstance instance
|
665
|
-
)
|
666
|
-
{
|
667
|
-
return _getAndVerifyComponent(expectedType, true); // only active
|
668
|
-
}
|
669
653
|
|
670
654
|
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
671
655
|
internal
|
@@ -696,13 +680,8 @@ contract ComponentService is
|
|
696
680
|
instance = IInstance(instanceAddress);
|
697
681
|
}
|
698
682
|
|
683
|
+
|
699
684
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
700
685
|
return COMPONENT();
|
701
686
|
}
|
702
|
-
|
703
|
-
function _checkSupportsInterface(address component) internal view {
|
704
|
-
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
705
|
-
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
706
|
-
}
|
707
|
-
}
|
708
687
|
}
|