@etherisc/gif-next 0.0.2-ccfa4c7-304 → 0.0.2-cd48412-522
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 +63 -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 +272 -102
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +662 -46
- 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 +227 -52
- 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 +180 -32
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +90 -17
- 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 -152
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +226 -65
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -98
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +378 -149
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +140 -78
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -97
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +232 -19
- 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 -110
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +225 -64
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -134
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +225 -64
- 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 +83 -177
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +225 -64
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +37 -71
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +225 -64
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +333 -190
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +225 -64
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- 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/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +368 -34
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +295 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +419 -96
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +591 -343
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +194 -73
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +569 -513
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +321 -31
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +80 -42
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1316 -2015
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- 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 +29 -41
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +239 -61
- 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 -31
- 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 -31
- 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 +96 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +225 -64
- 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 -41
- 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 -41
- 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 +338 -79
- 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 +238 -52
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +96 -42
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +225 -64
- 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 +187 -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 -52
- 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 +114 -112
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +99 -69
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +40 -52
- 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 +385 -243
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +266 -70
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +41 -12
- 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 +389 -191
- 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 +149 -97
- 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 -31
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +209 -190
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +113 -63
- 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 -31
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +118 -123
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
- 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 -31
- 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 +1385 -150
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +97 -117
- 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 +1471 -213
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +77 -76
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +123 -72
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +296 -152
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +131 -167
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +84 -54
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1615 -815
- 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 +153 -91
- 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 +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 +60 -36
- 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 +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 +264 -188
- package/contracts/authorization/AccessAdminLib.sol +222 -9
- package/contracts/authorization/Authorization.sol +38 -234
- package/contracts/authorization/IAccess.sol +25 -7
- 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 +7 -8
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +12 -56
- package/contracts/distribution/DistributionService.sol +126 -63
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +20 -8
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FireProduct.sol +6 -10
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -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/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +57 -6
- package/contracts/instance/IInstanceService.sol +42 -7
- package/contracts/instance/Instance.sol +112 -57
- package/contracts/instance/InstanceAdmin.sol +164 -235
- package/contracts/instance/InstanceAuthorizationV3.sol +101 -61
- package/contracts/instance/InstanceReader.sol +354 -392
- package/contracts/instance/InstanceService.sol +186 -134
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/TargetNames.sol +10 -0
- 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 +15 -6
- package/contracts/instance/module/IDistribution.sol +17 -7
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +3 -6
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +4 -8
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -18
- 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 +6 -20
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +41 -184
- package/contracts/product/ApplicationService.sol +69 -11
- package/contracts/product/BasicProduct.sol +2 -5
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +99 -105
- package/contracts/product/IApplicationService.sol +23 -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 +40 -59
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +33 -31
- package/contracts/product/Product.sol +40 -18
- package/contracts/product/RiskService.sol +57 -12
- 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 +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 +56 -52
- package/contracts/shared/Component.sol +16 -33
- package/contracts/shared/ComponentService.sol +249 -247
- package/contracts/shared/ContractLib.sol +106 -75
- package/contracts/shared/IComponent.sol +1 -4
- package/contracts/shared/IComponentService.sol +17 -16
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InstanceLinkedComponent.sol +6 -11
- 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 +262 -70
- package/contracts/staking/IStakingService.sol +39 -84
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +470 -219
- 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/Fee.sol +8 -8
- 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 +28 -10
- 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 +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/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- 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/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- 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,25 @@ 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";
|
29
|
+
import {ProductStore} from "../instance/ProductStore.sol";
|
28
30
|
import {Service} from "../shared/Service.sol";
|
29
31
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
30
32
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
31
|
-
import {VersionPart} from "../type/Version.sol";
|
32
33
|
|
33
34
|
|
34
35
|
contract ComponentService is
|
@@ -40,32 +41,7 @@ contract ComponentService is
|
|
40
41
|
|
41
42
|
IAccountingService private _accountingService;
|
42
43
|
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
|
-
|
44
|
+
IStaking private _staking;
|
69
45
|
|
70
46
|
function _initialize(
|
71
47
|
address owner,
|
@@ -84,60 +60,74 @@ contract ComponentService is
|
|
84
60
|
|
85
61
|
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
86
62
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
87
|
-
|
63
|
+
_staking = IStakingService(_getServiceAddress(STAKING())).getStaking();
|
88
64
|
|
89
65
|
_registerInterface(type(IComponentService).interfaceId);
|
90
66
|
}
|
91
67
|
|
92
68
|
//-------- component ----------------------------------------------------//
|
93
69
|
|
94
|
-
|
70
|
+
/// @inheritdoc IComponentService
|
71
|
+
function registerComponent(address componentAddress)
|
95
72
|
external
|
96
73
|
virtual
|
97
|
-
|
74
|
+
restricted()
|
98
75
|
returns (NftId componentNftId)
|
99
76
|
{
|
100
|
-
//
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
if (componentType == DISTRIBUTION()) {
|
106
|
-
return _registerDistribution(component);
|
77
|
+
// checks
|
78
|
+
// check sender is registered product
|
79
|
+
IRegistry registry = getRegistry();
|
80
|
+
if (!registry.isObjectType(msg.sender, PRODUCT())) {
|
81
|
+
revert ErrorComponentServiceCallerNotProduct(msg.sender);
|
107
82
|
}
|
108
|
-
|
109
|
-
|
83
|
+
|
84
|
+
// check provided address is product contract
|
85
|
+
if (!_isInstanceLinkedComponent(componentAddress)) {
|
86
|
+
revert ErrorComponentServiceNotComponent(componentAddress);
|
110
87
|
}
|
111
88
|
|
112
|
-
|
113
|
-
|
89
|
+
NftId productNftId = registry.getNftIdForAddress(msg.sender);
|
90
|
+
IInstance instance = IInstance(
|
91
|
+
registry.getObjectAddress(
|
92
|
+
registry.getParentNftId(productNftId)));
|
93
|
+
|
94
|
+
componentNftId = _verifyAndRegister(
|
95
|
+
instance,
|
96
|
+
componentAddress,
|
97
|
+
productNftId, // product is parent of component to be registered
|
98
|
+
address(0)); // token will be inhereited from product
|
114
99
|
}
|
115
100
|
|
101
|
+
|
102
|
+
/// @inheritdoc IComponentService
|
116
103
|
function approveTokenHandler(
|
117
104
|
IERC20Metadata token,
|
118
105
|
Amount amount
|
119
106
|
)
|
120
107
|
external
|
121
108
|
virtual
|
109
|
+
restricted()
|
122
110
|
{
|
123
111
|
// checks
|
124
|
-
(NftId componentNftId, IInstance instance) =
|
125
|
-
TokenHandler tokenHandler = instance.getInstanceReader().
|
126
|
-
componentNftId)
|
112
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
113
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
114
|
+
componentNftId);
|
127
115
|
|
128
116
|
// effects
|
129
117
|
tokenHandler.approve(token, amount);
|
130
118
|
}
|
131
119
|
|
132
120
|
|
121
|
+
/// @inheritdoc IComponentService
|
133
122
|
function setWallet(address newWallet)
|
134
123
|
external
|
135
124
|
virtual
|
125
|
+
restricted()
|
136
126
|
{
|
137
127
|
// checks
|
138
|
-
(NftId componentNftId, IInstance instance) =
|
139
|
-
TokenHandler tokenHandler = instance.getInstanceReader().
|
140
|
-
componentNftId)
|
128
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
129
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
130
|
+
componentNftId);
|
141
131
|
|
142
132
|
// effects
|
143
133
|
tokenHandler.setWallet(newWallet);
|
@@ -155,8 +145,10 @@ contract ComponentService is
|
|
155
145
|
instance.getInstanceAdmin().setComponentLocked(
|
156
146
|
component,
|
157
147
|
locked);
|
148
|
+
emit LogComponentServiceComponentLocked(component, locked);
|
158
149
|
}
|
159
150
|
|
151
|
+
|
160
152
|
/// @inheritdoc IComponentService
|
161
153
|
function withdrawFees(Amount amount)
|
162
154
|
external
|
@@ -165,7 +157,7 @@ contract ComponentService is
|
|
165
157
|
returns (Amount withdrawnAmount)
|
166
158
|
{
|
167
159
|
// checks
|
168
|
-
(NftId componentNftId, IInstance instance) =
|
160
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
169
161
|
InstanceReader instanceReader = instance.getInstanceReader();
|
170
162
|
|
171
163
|
// determine withdrawn amount
|
@@ -210,50 +202,70 @@ contract ComponentService is
|
|
210
202
|
|
211
203
|
//-------- product ------------------------------------------------------//
|
212
204
|
|
213
|
-
|
205
|
+
/// @inheritdoc IComponentService
|
206
|
+
function registerProduct(address productAddress, address token)
|
214
207
|
external
|
215
208
|
virtual
|
209
|
+
restricted()
|
216
210
|
nonReentrant()
|
217
|
-
onlyComponent(productAddress)
|
218
211
|
returns (NftId productNftId)
|
219
212
|
{
|
220
|
-
//
|
221
|
-
|
222
|
-
|
223
|
-
(,
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
// get product
|
228
|
-
IProductComponent product = IProductComponent(productAddress);
|
229
|
-
|
230
|
-
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
231
|
-
// force initialization of linked components with empty values to
|
232
|
-
// ensure no components are linked upon initialization of the product
|
233
|
-
initialProductInfo.poolNftId = NftIdLib.zero();
|
234
|
-
initialProductInfo.distributionNftId = NftIdLib.zero();
|
235
|
-
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
213
|
+
// checks
|
214
|
+
// check sender is registered instance
|
215
|
+
IRegistry registry = getRegistry();
|
216
|
+
if (!registry.isObjectType(msg.sender, INSTANCE())) {
|
217
|
+
revert ErrorComponentServiceCallerNotInstance(msg.sender);
|
218
|
+
}
|
236
219
|
|
237
|
-
//
|
238
|
-
|
239
|
-
|
240
|
-
|
220
|
+
// check provided address is product contract
|
221
|
+
if (!_isProduct(productAddress)) {
|
222
|
+
revert ErrorComponentServiceNotProduct(productAddress);
|
223
|
+
}
|
241
224
|
|
242
|
-
|
243
|
-
|
244
|
-
|
225
|
+
IInstance instance = IInstance(msg.sender);
|
226
|
+
NftId instanceNftId = registry.getNftIdForAddress(msg.sender);
|
227
|
+
productNftId = _verifyAndRegister(
|
228
|
+
instance,
|
229
|
+
productAddress,
|
230
|
+
instanceNftId, // instance is parent of product to be registered
|
231
|
+
token);
|
232
|
+
|
233
|
+
// add product specific token for product to staking
|
234
|
+
_staking.addTargetToken(
|
235
|
+
instanceNftId,
|
236
|
+
token);
|
245
237
|
}
|
246
238
|
|
247
239
|
|
240
|
+
function _isProduct(address target) internal view virtual returns (bool) {
|
241
|
+
if (!_isInstanceLinkedComponent(target)) {
|
242
|
+
return false;
|
243
|
+
}
|
244
|
+
|
245
|
+
return IInstanceLinkedComponent(target).getInitialInfo().objectType == PRODUCT();
|
246
|
+
}
|
247
|
+
|
248
|
+
|
249
|
+
function _isInstanceLinkedComponent(address target) internal view virtual returns (bool) {
|
250
|
+
if (!ContractLib.isContract(target)) {
|
251
|
+
return false;
|
252
|
+
}
|
253
|
+
|
254
|
+
return ContractLib.supportsInterface(target, type(IInstanceLinkedComponent).interfaceId);
|
255
|
+
}
|
256
|
+
|
257
|
+
|
258
|
+
/// @inheritdoc IComponentService
|
248
259
|
function setProductFees(
|
249
260
|
Fee memory productFee, // product fee on net premium
|
250
261
|
Fee memory processingFee // product fee on payout amounts
|
251
262
|
)
|
252
263
|
external
|
253
264
|
virtual
|
265
|
+
restricted()
|
254
266
|
nonReentrant()
|
255
267
|
{
|
256
|
-
(NftId productNftId, IInstance instance) =
|
268
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
|
257
269
|
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
258
270
|
bool feesChanged = false;
|
259
271
|
|
@@ -272,31 +284,53 @@ contract ComponentService is
|
|
272
284
|
}
|
273
285
|
|
274
286
|
if(feesChanged) {
|
275
|
-
instance.
|
287
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
276
288
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
277
289
|
}
|
278
290
|
}
|
279
291
|
|
292
|
+
|
293
|
+
function _createProduct(
|
294
|
+
ProductStore productStore,
|
295
|
+
NftId productNftId,
|
296
|
+
address productAddress
|
297
|
+
)
|
298
|
+
internal
|
299
|
+
virtual
|
300
|
+
{
|
301
|
+
// create product in instance instanceStore
|
302
|
+
IProductComponent product = IProductComponent(productAddress);
|
303
|
+
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
304
|
+
// force initialization of linked components with empty values to
|
305
|
+
// ensure no components are linked upon initialization of the product
|
306
|
+
initialProductInfo.poolNftId = NftIdLib.zero();
|
307
|
+
initialProductInfo.distributionNftId = NftIdLib.zero();
|
308
|
+
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
309
|
+
|
310
|
+
// create info
|
311
|
+
productStore.createProduct(
|
312
|
+
productNftId,
|
313
|
+
initialProductInfo);
|
314
|
+
|
315
|
+
productStore.createFee(
|
316
|
+
productNftId,
|
317
|
+
product.getInitialFeeInfo());
|
318
|
+
}
|
319
|
+
|
280
320
|
//-------- distribution -------------------------------------------------//
|
281
321
|
|
282
322
|
/// @dev registers the sending component as a distribution component
|
283
|
-
function
|
323
|
+
function _createDistribution(
|
324
|
+
ProductStore productStore,
|
325
|
+
NftId productNftId,
|
326
|
+
NftId distributionNftId,
|
327
|
+
IComponents.ProductInfo memory productInfo
|
328
|
+
)
|
284
329
|
internal
|
285
330
|
virtual
|
286
331
|
nonReentrant()
|
287
|
-
returns (NftId distributionNftId)
|
288
332
|
{
|
289
|
-
// register/create component info
|
290
|
-
InstanceReader instanceReader;
|
291
|
-
InstanceAdmin instanceAdmin;
|
292
|
-
InstanceStore instanceStore;
|
293
|
-
NftId productNftId;
|
294
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
295
|
-
distributioAddress,
|
296
|
-
DISTRIBUTION());
|
297
|
-
|
298
333
|
// check product is still expecting a distribution registration
|
299
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
300
334
|
if (!productInfo.hasDistribution) {
|
301
335
|
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
302
336
|
}
|
@@ -306,7 +340,7 @@ contract ComponentService is
|
|
306
340
|
|
307
341
|
// set distribution in product info
|
308
342
|
productInfo.distributionNftId = distributionNftId;
|
309
|
-
|
343
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
310
344
|
}
|
311
345
|
|
312
346
|
|
@@ -316,8 +350,9 @@ contract ComponentService is
|
|
316
350
|
)
|
317
351
|
external
|
318
352
|
virtual
|
353
|
+
restricted()
|
319
354
|
{
|
320
|
-
(NftId distributionNftId, IInstance instance) =
|
355
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyComponent(DISTRIBUTION(), true);
|
321
356
|
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
322
357
|
instance.getInstanceReader(), distributionNftId);
|
323
358
|
bool feesChanged = false;
|
@@ -337,30 +372,23 @@ contract ComponentService is
|
|
337
372
|
}
|
338
373
|
|
339
374
|
if(feesChanged) {
|
340
|
-
instance.
|
375
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
341
376
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
342
377
|
}
|
343
378
|
}
|
344
379
|
|
345
380
|
//-------- oracle -------------------------------------------------------//
|
346
381
|
|
347
|
-
function
|
382
|
+
function _createOracle(
|
383
|
+
ProductStore productStore,
|
384
|
+
NftId productNftId,
|
385
|
+
NftId oracleNftId,
|
386
|
+
IComponents.ProductInfo memory productInfo
|
387
|
+
)
|
348
388
|
internal
|
349
389
|
virtual
|
350
|
-
returns (NftId oracleNftId)
|
351
390
|
{
|
352
|
-
// register/create component setup
|
353
|
-
InstanceReader instanceReader;
|
354
|
-
InstanceAdmin instanceAdmin;
|
355
|
-
InstanceStore instanceStore;
|
356
|
-
NftId productNftId;
|
357
|
-
|
358
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
359
|
-
oracleAddress,
|
360
|
-
ORACLE());
|
361
|
-
|
362
391
|
// check product is still expecting an oracle registration
|
363
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
364
392
|
if (productInfo.expectedNumberOfOracles == 0) {
|
365
393
|
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
366
394
|
}
|
@@ -371,41 +399,37 @@ contract ComponentService is
|
|
371
399
|
// update/add oracle to product info
|
372
400
|
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
373
401
|
productInfo.numberOfOracles++;
|
374
|
-
|
402
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
375
403
|
}
|
376
404
|
|
377
405
|
//-------- pool ---------------------------------------------------------//
|
378
406
|
|
379
|
-
function
|
407
|
+
function _createPool(
|
408
|
+
InstanceStore instanceStore,
|
409
|
+
ProductStore productStore,
|
410
|
+
NftId productNftId,
|
411
|
+
NftId poolNftId,
|
412
|
+
address componentAddress,
|
413
|
+
IComponents.ProductInfo memory productInfo
|
414
|
+
)
|
380
415
|
internal
|
381
416
|
virtual
|
382
|
-
returns (NftId poolNftId)
|
383
417
|
{
|
384
|
-
// register/create component setup
|
385
|
-
InstanceReader instanceReader;
|
386
|
-
InstanceAdmin instanceAdmin;
|
387
|
-
InstanceStore instanceStore;
|
388
|
-
NftId productNftId;
|
389
|
-
|
390
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
391
|
-
poolAddress,
|
392
|
-
POOL());
|
393
|
-
|
394
418
|
// check product is still expecting a pool registration
|
395
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
419
|
+
//IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
396
420
|
if (productInfo.poolNftId.gtz()) {
|
397
421
|
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
398
422
|
}
|
399
423
|
|
400
424
|
// create info
|
401
|
-
IPoolComponent pool = IPoolComponent(
|
425
|
+
IPoolComponent pool = IPoolComponent(componentAddress);
|
402
426
|
instanceStore.createPool(
|
403
427
|
poolNftId,
|
404
428
|
pool.getInitialPoolInfo());
|
405
429
|
|
406
430
|
// update pool in product info
|
407
431
|
productInfo.poolNftId = poolNftId;
|
408
|
-
|
432
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
409
433
|
}
|
410
434
|
|
411
435
|
|
@@ -416,8 +440,9 @@ contract ComponentService is
|
|
416
440
|
)
|
417
441
|
external
|
418
442
|
virtual
|
443
|
+
restricted()
|
419
444
|
{
|
420
|
-
(NftId poolNftId, IInstance instance) =
|
445
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
|
421
446
|
|
422
447
|
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
423
448
|
instance.getInstanceReader(), poolNftId);
|
@@ -445,80 +470,116 @@ contract ComponentService is
|
|
445
470
|
}
|
446
471
|
|
447
472
|
if(feesChanged) {
|
448
|
-
instance.
|
473
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
449
474
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
450
475
|
}
|
451
476
|
}
|
452
477
|
|
478
|
+
|
453
479
|
/// @dev Registers the component represented by the provided address.
|
454
|
-
|
455
|
-
|
456
|
-
|
480
|
+
/// The caller must ensure componentAddress is IInstanceLinkedComponent.
|
481
|
+
function _verifyAndRegister(
|
482
|
+
IInstance instance,
|
483
|
+
address componentAddress,
|
484
|
+
NftId parentNftId,
|
485
|
+
address token
|
457
486
|
)
|
458
487
|
internal
|
459
488
|
virtual
|
460
|
-
returns (
|
461
|
-
InstanceReader instanceReader,
|
462
|
-
InstanceAdmin instanceAdmin,
|
463
|
-
InstanceStore instanceStore,
|
464
|
-
NftId parentNftId,
|
465
|
-
NftId componentNftId
|
466
|
-
)
|
489
|
+
returns (NftId componentNftId)
|
467
490
|
{
|
468
|
-
NftId instanceNftId;
|
469
|
-
IInstance instance;
|
470
|
-
IInstanceLinkedComponent component;
|
471
|
-
address initialOwner;
|
472
|
-
|
473
491
|
(
|
474
|
-
|
475
|
-
|
476
|
-
parentNftId,
|
477
|
-
component,
|
478
|
-
initialOwner
|
492
|
+
IInstanceLinkedComponent component,
|
493
|
+
IRegistry.ObjectInfo memory objectInfo // initial component info
|
479
494
|
) = _getAndVerifyRegisterableComponent(
|
480
|
-
getRegistry(),
|
481
495
|
componentAddress,
|
482
|
-
|
496
|
+
parentNftId);
|
483
497
|
|
484
|
-
|
485
|
-
|
486
|
-
instanceAdmin = instance.getInstanceAdmin();
|
487
|
-
instanceStore = instance.getInstanceStore();
|
498
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
499
|
+
ObjectType componentType = objectInfo.objectType;
|
488
500
|
|
489
|
-
|
490
|
-
|
501
|
+
if(componentType == PRODUCT()) {
|
502
|
+
// register product with registry
|
491
503
|
componentNftId = _registryService.registerProduct(
|
492
|
-
component,
|
504
|
+
component,
|
505
|
+
objectInfo.initialOwner).nftId;
|
506
|
+
|
507
|
+
// create product info in instance store
|
508
|
+
_createProduct(instance.getProductStore(), componentNftId, componentAddress);
|
493
509
|
} else {
|
510
|
+
// register non product component with registry
|
494
511
|
componentNftId = _registryService.registerProductLinkedComponent(
|
495
|
-
component,
|
512
|
+
component,
|
513
|
+
objectInfo.objectType,
|
514
|
+
objectInfo.initialOwner).nftId;
|
515
|
+
|
516
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
517
|
+
|
518
|
+
// create non product component info in instance store
|
519
|
+
NftId productNftId = parentNftId;
|
520
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
521
|
+
if(componentType == POOL()) {
|
522
|
+
_createPool(instanceStore, instance.getProductStore(), productNftId, componentNftId, componentAddress, productInfo);
|
523
|
+
} else if(componentType == DISTRIBUTION()) {
|
524
|
+
_createDistribution(instance.getProductStore(), productNftId, componentNftId, productInfo);
|
525
|
+
} else if(componentType == ORACLE()) {
|
526
|
+
_createOracle(instance.getProductStore(), productNftId, componentNftId, productInfo);
|
527
|
+
} else {
|
528
|
+
revert ErrorComponentServiceComponentTypeNotSupported(componentAddress, componentType);
|
529
|
+
}
|
530
|
+
|
531
|
+
// get product's token
|
532
|
+
token = address(instanceReader.getTokenHandler(productNftId).TOKEN());
|
496
533
|
}
|
497
534
|
|
535
|
+
_checkToken(instance, token);
|
536
|
+
|
537
|
+
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
538
|
+
|
498
539
|
// deploy and wire token handler
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
instanceStore.createComponent(
|
511
|
-
componentNftId,
|
512
|
-
componentInfo);
|
513
|
-
}
|
540
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
541
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
542
|
+
address(getRegistry()),
|
543
|
+
address(component), // initially, component is its own wallet
|
544
|
+
token,
|
545
|
+
instanceAdmin.authority());
|
546
|
+
|
547
|
+
// register component with instance
|
548
|
+
instanceStore.createComponent(
|
549
|
+
componentNftId,
|
550
|
+
componentInfo);
|
514
551
|
|
515
552
|
// link component contract to nft id
|
516
553
|
component.linkToRegisteredNftId();
|
517
554
|
|
518
555
|
// authorize
|
519
|
-
instanceAdmin.initializeComponentAuthorization(componentAddress,
|
556
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
|
520
557
|
|
521
|
-
emit LogComponentServiceRegistered(
|
558
|
+
emit LogComponentServiceRegistered(
|
559
|
+
instance.getNftId(),
|
560
|
+
componentNftId,
|
561
|
+
componentType,
|
562
|
+
address(component),
|
563
|
+
token,
|
564
|
+
objectInfo.initialOwner);
|
565
|
+
}
|
566
|
+
|
567
|
+
|
568
|
+
function _checkToken(IInstance instance, address token)
|
569
|
+
internal
|
570
|
+
view
|
571
|
+
{
|
572
|
+
if (! instance.isTokenRegistryDisabled()) {
|
573
|
+
// check if provided token is whitelisted and active
|
574
|
+
if (!ContractLib.isActiveToken(
|
575
|
+
getRegistry().getTokenRegistryAddress(),
|
576
|
+
ChainIdLib.current(),
|
577
|
+
token,
|
578
|
+
AccessManagerCloneable(authority()).getRelease())
|
579
|
+
) {
|
580
|
+
revert ErrorComponentServiceTokenInvalid(token);
|
581
|
+
}
|
582
|
+
}
|
522
583
|
}
|
523
584
|
|
524
585
|
|
@@ -555,98 +616,44 @@ contract ComponentService is
|
|
555
616
|
|
556
617
|
/// @dev Based on the provided component address required type the component
|
557
618
|
/// and related instance contract this function reverts iff:
|
558
|
-
/// - the
|
559
|
-
/// - the component
|
560
|
-
/// - the component type does not match with the required type
|
619
|
+
/// - the component parent does not match with the required parent
|
620
|
+
/// - the component release does not match with the service release
|
561
621
|
/// - the component has already been registered
|
562
622
|
function _getAndVerifyRegisterableComponent(
|
563
|
-
IRegistry registry,
|
564
623
|
address componentAddress,
|
565
|
-
|
624
|
+
NftId requiredParent
|
566
625
|
)
|
567
626
|
internal
|
568
627
|
view
|
569
628
|
returns (
|
570
|
-
NftId instanceNftId,
|
571
|
-
IInstance instance,
|
572
|
-
NftId parentNftId,
|
573
629
|
IInstanceLinkedComponent component,
|
574
|
-
|
630
|
+
IRegistry.ObjectInfo memory info
|
575
631
|
)
|
576
632
|
{
|
577
|
-
// check sender (instance or product) is registered
|
578
|
-
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
579
|
-
if (senderInfo.nftId.eqz()) {
|
580
|
-
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
581
|
-
}
|
582
|
-
|
583
|
-
// the sender is the parent of the component to be registered
|
584
|
-
// an instance caller wanting to register a product - or -
|
585
|
-
// a product caller wantint go register a distribution, oracle or pool
|
586
|
-
parentNftId = senderInfo.nftId;
|
587
|
-
|
588
|
-
// check component is of required type
|
589
633
|
component = IInstanceLinkedComponent(componentAddress);
|
590
|
-
|
591
|
-
if(info.objectType != requiredType) {
|
592
|
-
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
593
|
-
}
|
634
|
+
info = component.getInitialInfo();
|
594
635
|
|
595
|
-
// check component
|
596
|
-
if
|
597
|
-
revert
|
636
|
+
// check component parent
|
637
|
+
if(info.parentNftId != requiredParent) {
|
638
|
+
revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
|
598
639
|
}
|
599
640
|
|
600
|
-
// component release
|
601
|
-
|
602
|
-
|
603
|
-
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), getRelease());
|
604
|
-
// component release matches parent release
|
605
|
-
} else if (component.getRelease() != IRegisterable(parentAddress).getRelease()){
|
606
|
-
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
641
|
+
// check component release (must match with service release)
|
642
|
+
if(component.getRelease() != getRelease()) {
|
643
|
+
revert ErrorComponentServiceComponentReleaseMismatch(componentAddress, getRelease(), component.getRelease());
|
607
644
|
}
|
608
645
|
|
609
|
-
// check component
|
610
|
-
|
611
|
-
|
612
|
-
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
613
|
-
}
|
614
|
-
|
615
|
-
// verify parent is registered instance
|
616
|
-
if (requiredType == PRODUCT()) {
|
617
|
-
if (senderInfo.objectType != INSTANCE()) {
|
618
|
-
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
619
|
-
}
|
620
|
-
|
621
|
-
instanceNftId = senderInfo.nftId;
|
622
|
-
// verify parent is registered product
|
623
|
-
} else {
|
624
|
-
if (senderInfo.objectType != PRODUCT()) {
|
625
|
-
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
626
|
-
}
|
627
|
-
|
628
|
-
instanceNftId = senderInfo.parentNftId;
|
646
|
+
// check component has not already been registered
|
647
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
648
|
+
revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
|
629
649
|
}
|
630
|
-
|
631
|
-
// get initial owner and instance
|
632
|
-
initialOwner = info.initialOwner;
|
633
|
-
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
634
650
|
}
|
635
651
|
|
652
|
+
|
636
653
|
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
637
654
|
instanceAdmin.setTargetLocked(componentAddress, locked);
|
638
655
|
}
|
639
656
|
|
640
|
-
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
641
|
-
internal
|
642
|
-
view
|
643
|
-
returns (
|
644
|
-
NftId componentNftId,
|
645
|
-
IInstance instance
|
646
|
-
)
|
647
|
-
{
|
648
|
-
return _getAndVerifyComponent(expectedType, true); // only active
|
649
|
-
}
|
650
657
|
|
651
658
|
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
652
659
|
internal
|
@@ -677,13 +684,8 @@ contract ComponentService is
|
|
677
684
|
instance = IInstance(instanceAddress);
|
678
685
|
}
|
679
686
|
|
687
|
+
|
680
688
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
681
689
|
return COMPONENT();
|
682
690
|
}
|
683
|
-
|
684
|
-
function _checkSupportsInterface(address component) internal view {
|
685
|
-
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
686
|
-
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
687
|
-
}
|
688
|
-
}
|
689
691
|
}
|