@etherisc/gif-next 0.0.2-da2c7dd-538 → 0.0.2-da87b00-860
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 +57 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +91 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +573 -288
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +295 -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 +452 -210
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +119 -14
- 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 +64 -142
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +275 -59
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -88
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +448 -148
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +143 -77
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -87
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +296 -20
- 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 +109 -100
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +274 -58
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -124
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +274 -58
- 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 +126 -166
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +274 -58
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -63
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -138
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +274 -58
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +333 -180
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +274 -58
- 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 +427 -28
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +335 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +430 -62
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +822 -402
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +299 -58
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +619 -402
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +367 -64
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -55
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +448 -374
- 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 +20 -20
- 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 +33 -35
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +294 -53
- 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 -21
- 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 -21
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +96 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -69
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +274 -58
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +300 -123
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +124 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +186 -33
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -31
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +238 -19
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -31
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +100 -34
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +346 -87
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +121 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +103 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -48
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +274 -58
- 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 +113 -75
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -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 +50 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -42
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +224 -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 +511 -21
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +118 -72
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +100 -70
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +40 -42
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +258 -44
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +84 -42
- 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 +33 -22
- 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 +71 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +704 -472
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
- 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 +76 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +710 -407
- 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 +184 -128
- 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 -21
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +212 -232
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +113 -71
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
- 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 -21
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +119 -147
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -21
- 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/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -21
- 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 +1450 -140
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +161 -110
- 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 +1624 -272
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +135 -68
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +200 -157
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +86 -52
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1600 -818
- 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 +159 -87
- 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 +10 -10
- 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 +93 -37
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +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 +33 -31
- 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 +60 -36
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +65 -27
- 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 +4 -2
- package/contracts/authorization/AccessAdmin.sol +389 -298
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +40 -31
- package/contracts/authorization/Authorization.sol +60 -228
- package/contracts/authorization/IAccess.sol +25 -7
- package/contracts/authorization/IAccessAdmin.sol +81 -80
- package/contracts/authorization/IAuthorization.sol +3 -51
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +248 -34
- package/contracts/distribution/BasicDistribution.sol +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +10 -52
- package/contracts/distribution/DistributionService.sol +154 -64
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +24 -10
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FireProduct.sol +6 -10
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
- package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -23
- package/contracts/instance/IInstance.sol +87 -12
- package/contracts/instance/IInstanceService.sol +52 -7
- package/contracts/instance/Instance.sol +148 -48
- package/contracts/instance/InstanceAdmin.sol +227 -281
- package/contracts/instance/InstanceAuthorizationV3.sol +79 -26
- package/contracts/instance/InstanceReader.sol +375 -380
- package/contracts/instance/InstanceService.sol +230 -134
- 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/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +16 -5
- package/contracts/instance/module/IDistribution.sol +19 -7
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +2 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +2 -4
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +3 -16
- 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 -16
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +41 -184
- package/contracts/product/ApplicationService.sol +83 -15
- package/contracts/product/BasicProduct.sol +1 -3
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +56 -58
- package/contracts/product/IApplicationService.sol +24 -2
- package/contracts/product/IClaimService.sol +5 -4
- package/contracts/product/IPolicyService.sol +9 -2
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IRiskService.sol +21 -3
- package/contracts/product/PolicyService.sol +31 -68
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +33 -31
- package/contracts/product/Product.sol +38 -14
- package/contracts/product/RiskService.sol +55 -9
- package/contracts/registry/IRegistry.sol +15 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +15 -9
- package/contracts/registry/RegistryAdmin.sol +100 -263
- package/contracts/registry/RegistryAuthorization.sol +336 -0
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +62 -112
- package/contracts/registry/ReleaseRegistry.sol +57 -43
- package/contracts/registry/ServiceAuthorizationV3.sol +128 -33
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +18 -31
- package/contracts/shared/ComponentService.sol +239 -244
- package/contracts/shared/ContractLib.sol +134 -75
- package/contracts/shared/IComponent.sol +1 -4
- package/contracts/shared/IComponentService.sol +21 -22
- package/contracts/shared/IKeyValueStore.sol +1 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +4 -7
- package/contracts/shared/KeyValueStore.sol +3 -3
- package/contracts/shared/NftOwnable.sol +4 -2
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Registerable.sol +1 -4
- package/contracts/shared/Service.sol +6 -4
- package/contracts/shared/TokenHandler.sol +5 -4
- package/contracts/staking/IStaking.sol +266 -64
- package/contracts/staking/IStakingService.sol +44 -82
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +473 -202
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +58 -77
- package/contracts/staking/StakingService.sol +49 -158
- package/contracts/staking/StakingServiceManager.sol +1 -0
- package/contracts/staking/StakingStore.sol +1089 -330
- 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/Fee.sol +8 -8
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +21 -17
- 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 +28 -10
- package/contracts/type/Version.sol +39 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +25 -11
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +2 -2
- 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/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -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,23 +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
|
|
21
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
22
22
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
23
|
+
import {ChainIdLib} from "../type/ChainId.sol";
|
23
24
|
import {ContractLib} from "../shared/ContractLib.sol";
|
24
25
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
25
26
|
import {KEEP_STATE} from "../type/StateId.sol";
|
26
27
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
27
|
-
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";
|
28
29
|
import {Service} from "../shared/Service.sol";
|
29
30
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
30
31
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
31
|
-
import {VersionPart} from "../type/Version.sol";
|
32
32
|
|
33
33
|
|
34
34
|
contract ComponentService is
|
@@ -40,32 +40,7 @@ contract ComponentService is
|
|
40
40
|
|
41
41
|
IAccountingService private _accountingService;
|
42
42
|
IRegistryService private _registryService;
|
43
|
-
|
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
|
-
|
43
|
+
IStaking private _staking;
|
69
44
|
|
70
45
|
function _initialize(
|
71
46
|
address owner,
|
@@ -84,95 +59,104 @@ contract ComponentService is
|
|
84
59
|
|
85
60
|
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
86
61
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
87
|
-
|
62
|
+
_staking = IStakingService(_getServiceAddress(STAKING())).getStaking();
|
88
63
|
|
89
64
|
_registerInterface(type(IComponentService).interfaceId);
|
90
65
|
}
|
91
66
|
|
92
67
|
//-------- component ----------------------------------------------------//
|
93
68
|
|
94
|
-
|
69
|
+
/// @inheritdoc IComponentService
|
70
|
+
function registerComponent(address componentAddress)
|
95
71
|
external
|
96
72
|
virtual
|
97
|
-
|
73
|
+
restricted()
|
98
74
|
returns (NftId componentNftId)
|
99
75
|
{
|
100
|
-
//
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
if (componentType == DISTRIBUTION()) {
|
106
|
-
return _registerDistribution(component);
|
76
|
+
// checks
|
77
|
+
// check sender is registered product
|
78
|
+
IRegistry registry = getRegistry();
|
79
|
+
if (!registry.isObjectType(msg.sender, PRODUCT())) {
|
80
|
+
revert ErrorComponentServiceCallerNotProduct(msg.sender);
|
107
81
|
}
|
108
|
-
|
109
|
-
|
82
|
+
|
83
|
+
// check provided address is product contract
|
84
|
+
if (!_isInstanceLinkedComponent(componentAddress)) {
|
85
|
+
revert ErrorComponentServiceNotComponent(componentAddress);
|
110
86
|
}
|
111
87
|
|
112
|
-
|
113
|
-
|
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
|
114
98
|
}
|
115
99
|
|
100
|
+
|
101
|
+
/// @inheritdoc IComponentService
|
116
102
|
function approveTokenHandler(
|
117
103
|
IERC20Metadata token,
|
118
104
|
Amount amount
|
119
105
|
)
|
120
106
|
external
|
121
107
|
virtual
|
108
|
+
restricted()
|
122
109
|
{
|
123
110
|
// checks
|
124
|
-
(NftId componentNftId, IInstance instance) =
|
125
|
-
TokenHandler tokenHandler = instance.getInstanceReader().
|
126
|
-
componentNftId)
|
111
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
112
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
113
|
+
componentNftId);
|
127
114
|
|
128
115
|
// effects
|
129
116
|
tokenHandler.approve(token, amount);
|
130
117
|
}
|
131
118
|
|
132
119
|
|
120
|
+
/// @inheritdoc IComponentService
|
133
121
|
function setWallet(address newWallet)
|
134
122
|
external
|
135
123
|
virtual
|
124
|
+
restricted()
|
136
125
|
{
|
137
126
|
// checks
|
138
|
-
(NftId componentNftId, IInstance instance) =
|
139
|
-
TokenHandler tokenHandler = instance.getInstanceReader().
|
140
|
-
componentNftId)
|
127
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
128
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
129
|
+
componentNftId);
|
141
130
|
|
142
131
|
// effects
|
143
132
|
tokenHandler.setWallet(newWallet);
|
144
133
|
}
|
145
134
|
|
146
135
|
/// @inheritdoc IComponentService
|
147
|
-
function
|
136
|
+
function setLocked(bool locked)
|
148
137
|
external
|
149
138
|
virtual
|
150
|
-
|
151
|
-
{
|
152
|
-
address instanceAddress = msg.sender;
|
153
|
-
// NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
154
|
-
IInstance instance = IInstance(instanceAddress);
|
155
|
-
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
156
|
-
}
|
157
|
-
|
158
|
-
/// @inheritdoc IComponentService
|
159
|
-
function setLockedFromComponent(address componentAddress, bool locked)
|
160
|
-
external
|
161
|
-
virtual
|
162
|
-
onlyComponent(msg.sender)
|
139
|
+
restricted()
|
163
140
|
{
|
164
141
|
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
165
|
-
|
142
|
+
|
143
|
+
address component = msg.sender;
|
144
|
+
instance.getInstanceAdmin().setComponentLocked(
|
145
|
+
component,
|
146
|
+
locked);
|
147
|
+
emit LogComponentServiceComponentLocked(component, locked);
|
166
148
|
}
|
167
149
|
|
150
|
+
|
168
151
|
/// @inheritdoc IComponentService
|
169
152
|
function withdrawFees(Amount amount)
|
170
153
|
external
|
171
154
|
virtual
|
155
|
+
restricted()
|
172
156
|
returns (Amount withdrawnAmount)
|
173
157
|
{
|
174
158
|
// checks
|
175
|
-
(NftId componentNftId, IInstance instance) =
|
159
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
176
160
|
InstanceReader instanceReader = instance.getInstanceReader();
|
177
161
|
|
178
162
|
// determine withdrawn amount
|
@@ -198,6 +182,7 @@ contract ComponentService is
|
|
198
182
|
componentNftId,
|
199
183
|
withdrawnAmount);
|
200
184
|
|
185
|
+
// transfer amount to component owner
|
201
186
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
202
187
|
TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
|
203
188
|
emit LogComponentServiceComponentFeesWithdrawn(
|
@@ -216,50 +201,70 @@ contract ComponentService is
|
|
216
201
|
|
217
202
|
//-------- product ------------------------------------------------------//
|
218
203
|
|
219
|
-
|
204
|
+
/// @inheritdoc IComponentService
|
205
|
+
function registerProduct(address productAddress, address token)
|
220
206
|
external
|
221
207
|
virtual
|
208
|
+
restricted()
|
222
209
|
nonReentrant()
|
223
|
-
onlyComponent(productAddress)
|
224
210
|
returns (NftId productNftId)
|
225
211
|
{
|
226
|
-
//
|
227
|
-
|
228
|
-
|
229
|
-
(,
|
230
|
-
|
231
|
-
|
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);
|
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
|
+
}
|
242
218
|
|
243
|
-
//
|
244
|
-
|
245
|
-
|
246
|
-
|
219
|
+
// check provided address is product contract
|
220
|
+
if (!_isProduct(productAddress)) {
|
221
|
+
revert ErrorComponentServiceNotProduct(productAddress);
|
222
|
+
}
|
247
223
|
|
248
|
-
|
249
|
-
|
250
|
-
|
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
|
+
token);
|
231
|
+
|
232
|
+
// add product specific token for product to staking
|
233
|
+
_staking.addTargetToken(
|
234
|
+
instanceNftId,
|
235
|
+
token);
|
251
236
|
}
|
252
237
|
|
253
238
|
|
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);
|
254
|
+
}
|
255
|
+
|
256
|
+
|
257
|
+
/// @inheritdoc IComponentService
|
254
258
|
function setProductFees(
|
255
259
|
Fee memory productFee, // product fee on net premium
|
256
260
|
Fee memory processingFee // product fee on payout amounts
|
257
261
|
)
|
258
262
|
external
|
259
263
|
virtual
|
264
|
+
restricted()
|
260
265
|
nonReentrant()
|
261
266
|
{
|
262
|
-
(NftId productNftId, IInstance instance) =
|
267
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
|
263
268
|
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
264
269
|
bool feesChanged = false;
|
265
270
|
|
@@ -283,26 +288,48 @@ contract ComponentService is
|
|
283
288
|
}
|
284
289
|
}
|
285
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
|
+
|
286
319
|
//-------- distribution -------------------------------------------------//
|
287
320
|
|
288
321
|
/// @dev registers the sending component as a distribution component
|
289
|
-
function
|
322
|
+
function _createDistribution(
|
323
|
+
InstanceStore instanceStore,
|
324
|
+
NftId productNftId,
|
325
|
+
NftId distributionNftId,
|
326
|
+
IComponents.ProductInfo memory productInfo
|
327
|
+
)
|
290
328
|
internal
|
291
329
|
virtual
|
292
330
|
nonReentrant()
|
293
|
-
returns (NftId distributionNftId)
|
294
331
|
{
|
295
|
-
// register/create component info
|
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
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,23 +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
|
-
|
368
390
|
// check product is still expecting an oracle registration
|
369
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
370
391
|
if (productInfo.expectedNumberOfOracles == 0) {
|
371
392
|
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
372
393
|
}
|
@@ -382,29 +403,24 @@ contract ComponentService is
|
|
382
403
|
|
383
404
|
//-------- pool ---------------------------------------------------------//
|
384
405
|
|
385
|
-
function
|
406
|
+
function _createPool(
|
407
|
+
InstanceStore instanceStore,
|
408
|
+
NftId productNftId,
|
409
|
+
NftId poolNftId,
|
410
|
+
address componentAddress,
|
411
|
+
IComponents.ProductInfo memory productInfo
|
412
|
+
)
|
386
413
|
internal
|
387
414
|
virtual
|
388
|
-
returns (NftId poolNftId)
|
389
415
|
{
|
390
|
-
// register/create component setup
|
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
416
|
// check product is still expecting a pool registration
|
401
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
417
|
+
//IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
402
418
|
if (productInfo.poolNftId.gtz()) {
|
403
419
|
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
404
420
|
}
|
405
421
|
|
406
422
|
// create info
|
407
|
-
IPoolComponent pool = IPoolComponent(
|
423
|
+
IPoolComponent pool = IPoolComponent(componentAddress);
|
408
424
|
instanceStore.createPool(
|
409
425
|
poolNftId,
|
410
426
|
pool.getInitialPoolInfo());
|
@@ -422,8 +438,9 @@ contract ComponentService is
|
|
422
438
|
)
|
423
439
|
external
|
424
440
|
virtual
|
441
|
+
restricted()
|
425
442
|
{
|
426
|
-
(NftId poolNftId, IInstance instance) =
|
443
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
|
427
444
|
|
428
445
|
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
429
446
|
instance.getInstanceReader(), poolNftId);
|
@@ -456,59 +473,72 @@ contract ComponentService is
|
|
456
473
|
}
|
457
474
|
}
|
458
475
|
|
476
|
+
|
459
477
|
/// @dev Registers the component represented by the provided address.
|
460
|
-
|
461
|
-
|
462
|
-
|
478
|
+
/// The caller must ensure componentAddress is IInstanceLinkedComponent.
|
479
|
+
function _verifyAndRegister(
|
480
|
+
IInstance instance,
|
481
|
+
address componentAddress,
|
482
|
+
NftId parentNftId,
|
483
|
+
address token
|
463
484
|
)
|
464
485
|
internal
|
465
486
|
virtual
|
466
|
-
returns (
|
467
|
-
InstanceReader instanceReader,
|
468
|
-
InstanceAdmin instanceAdmin,
|
469
|
-
InstanceStore instanceStore,
|
470
|
-
NftId parentNftId,
|
471
|
-
NftId componentNftId
|
472
|
-
)
|
487
|
+
returns (NftId componentNftId)
|
473
488
|
{
|
474
|
-
NftId instanceNftId;
|
475
|
-
IInstance instance;
|
476
|
-
IInstanceLinkedComponent component;
|
477
|
-
address initialOwner;
|
478
|
-
|
479
489
|
(
|
480
|
-
|
481
|
-
|
482
|
-
parentNftId,
|
483
|
-
component,
|
484
|
-
initialOwner
|
490
|
+
IInstanceLinkedComponent component,
|
491
|
+
IRegistry.ObjectInfo memory objectInfo // initial component info
|
485
492
|
) = _getAndVerifyRegisterableComponent(
|
486
|
-
getRegistry(),
|
487
493
|
componentAddress,
|
488
|
-
|
494
|
+
parentNftId);
|
489
495
|
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
496
|
+
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
497
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
498
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
499
|
+
ObjectType componentType = objectInfo.objectType;
|
494
500
|
|
495
|
-
|
496
|
-
|
501
|
+
if(componentType == PRODUCT()) {
|
502
|
+
// register product with registry
|
497
503
|
componentNftId = _registryService.registerProduct(
|
498
|
-
component,
|
504
|
+
component,
|
505
|
+
objectInfo.initialOwner).nftId;
|
506
|
+
|
507
|
+
// create product info in instance store
|
508
|
+
_createProduct(instanceStore, componentNftId, componentAddress);
|
499
509
|
} else {
|
510
|
+
// register non product component with registry
|
500
511
|
componentNftId = _registryService.registerProductLinkedComponent(
|
501
|
-
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());
|
502
531
|
}
|
503
532
|
|
533
|
+
_checkToken(instance, token);
|
534
|
+
|
504
535
|
// deploy and wire token handler
|
505
536
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
506
|
-
IERC20Metadata token = componentInfo.token;
|
507
537
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
508
538
|
address(getRegistry()),
|
509
539
|
address(component), // initially, component is its own wallet
|
510
|
-
|
511
|
-
|
540
|
+
token,
|
541
|
+
instanceAdmin.authority());
|
512
542
|
|
513
543
|
// register component with instance
|
514
544
|
instanceStore.createComponent(
|
@@ -519,9 +549,33 @@ contract ComponentService is
|
|
519
549
|
component.linkToRegisteredNftId();
|
520
550
|
|
521
551
|
// authorize
|
522
|
-
instanceAdmin.initializeComponentAuthorization(
|
552
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
|
553
|
+
|
554
|
+
emit LogComponentServiceRegistered(
|
555
|
+
instance.getNftId(),
|
556
|
+
componentNftId,
|
557
|
+
componentType,
|
558
|
+
address(component),
|
559
|
+
token,
|
560
|
+
objectInfo.initialOwner);
|
561
|
+
}
|
562
|
+
|
523
563
|
|
524
|
-
|
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
|
+
}
|
525
579
|
}
|
526
580
|
|
527
581
|
|
@@ -558,98 +612,44 @@ contract ComponentService is
|
|
558
612
|
|
559
613
|
/// @dev Based on the provided component address required type the component
|
560
614
|
/// and related instance contract this function reverts iff:
|
561
|
-
/// - the
|
562
|
-
/// - the component
|
563
|
-
/// - 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
|
564
617
|
/// - the component has already been registered
|
565
618
|
function _getAndVerifyRegisterableComponent(
|
566
|
-
IRegistry registry,
|
567
619
|
address componentAddress,
|
568
|
-
|
620
|
+
NftId requiredParent
|
569
621
|
)
|
570
622
|
internal
|
571
623
|
view
|
572
624
|
returns (
|
573
|
-
NftId instanceNftId,
|
574
|
-
IInstance instance,
|
575
|
-
NftId parentNftId,
|
576
625
|
IInstanceLinkedComponent component,
|
577
|
-
|
626
|
+
IRegistry.ObjectInfo memory info
|
578
627
|
)
|
579
628
|
{
|
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);
|
584
|
-
}
|
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
|
-
|
591
|
-
// check component is of required type
|
592
629
|
component = IInstanceLinkedComponent(componentAddress);
|
593
|
-
|
594
|
-
if(info.objectType != requiredType) {
|
595
|
-
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
596
|
-
}
|
630
|
+
info = component.getInitialInfo();
|
597
631
|
|
598
|
-
// check component
|
599
|
-
if
|
600
|
-
revert
|
632
|
+
// check component parent
|
633
|
+
if(info.parentNftId != requiredParent) {
|
634
|
+
revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
|
601
635
|
}
|
602
636
|
|
603
|
-
// component release
|
604
|
-
|
605
|
-
|
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());
|
637
|
+
// check component release (must match with service release)
|
638
|
+
if(component.getRelease() != getRelease()) {
|
639
|
+
revert ErrorComponentServiceComponentReleaseMismatch(componentAddress, getRelease(), component.getRelease());
|
610
640
|
}
|
611
641
|
|
612
|
-
// check component
|
613
|
-
|
614
|
-
|
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;
|
642
|
+
// check component has not already been registered
|
643
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
644
|
+
revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
|
632
645
|
}
|
633
|
-
|
634
|
-
// get initial owner and instance
|
635
|
-
initialOwner = info.initialOwner;
|
636
|
-
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
637
646
|
}
|
638
647
|
|
648
|
+
|
639
649
|
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
640
650
|
instanceAdmin.setTargetLocked(componentAddress, locked);
|
641
651
|
}
|
642
652
|
|
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
653
|
|
654
654
|
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
655
655
|
internal
|
@@ -680,13 +680,8 @@ contract ComponentService is
|
|
680
680
|
instance = IInstance(instanceAddress);
|
681
681
|
}
|
682
682
|
|
683
|
+
|
683
684
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
684
685
|
return COMPONENT();
|
685
686
|
}
|
686
|
-
|
687
|
-
function _checkSupportsInterface(address component) internal view {
|
688
|
-
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
689
|
-
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
690
|
-
}
|
691
|
-
}
|
692
687
|
}
|