@etherisc/gif-next 0.0.2-b2e620f-736 → 0.0.2-b37fa8b-169
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 +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 +66 -144
- 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 +512 -204
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +147 -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 +358 -82
- 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 -132
- 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 +128 -168
- 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 +342 -183
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
- 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 +429 -35
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +345 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +473 -98
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +805 -448
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +246 -70
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +656 -418
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +377 -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 +524 -1520
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2835 -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 +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 +231 -19
- 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 +279 -43
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +91 -41
- 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 +224 -210
- 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 +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 +131 -141
- 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 +43 -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 +43 -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 +1565 -229
- 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 +129 -70
- 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 +1633 -819
- 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 +9 -4
- 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 +13 -11
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +20 -60
- package/contracts/distribution/DistributionService.sol +165 -74
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +34 -19
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FireProduct.sol +7 -12
- 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 +87 -27
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +99 -14
- package/contracts/instance/IInstanceService.sol +54 -7
- package/contracts/instance/Instance.sol +166 -70
- package/contracts/instance/InstanceAdmin.sol +227 -296
- package/contracts/instance/InstanceAuthorizationV3.sol +121 -60
- package/contracts/instance/InstanceReader.sol +378 -373
- package/contracts/instance/InstanceService.sol +283 -173
- package/contracts/instance/InstanceStore.sol +9 -82
- package/contracts/instance/ProductStore.sol +235 -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 +16 -5
- package/contracts/instance/module/IDistribution.sol +21 -8
- 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 +85 -17
- package/contracts/product/BasicProduct.sol +1 -3
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +99 -105
- 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 +25 -10
- package/contracts/product/PolicyService.sol +41 -103
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +33 -31
- package/contracts/product/Product.sol +44 -29
- package/contracts/product/RiskService.sol +63 -18
- 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 +48 -32
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +17 -29
- package/contracts/shared/ComponentService.sol +249 -238
- package/contracts/shared/ContractLib.sol +134 -75
- package/contracts/shared/IComponent.sol +1 -4
- package/contracts/shared/IComponentService.sol +21 -19
- package/contracts/shared/IKeyValueStore.sol +9 -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 +474 -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 +1093 -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/RiskId.sol +4 -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/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,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,84 +60,104 @@ 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);
|
144
134
|
}
|
145
135
|
|
146
136
|
/// @inheritdoc IComponentService
|
147
|
-
function
|
137
|
+
function setLocked(bool locked)
|
148
138
|
external
|
149
139
|
virtual
|
150
140
|
restricted()
|
151
141
|
{
|
152
|
-
// TODO inactive component can lock/unlock other components?
|
153
142
|
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
154
|
-
|
143
|
+
|
144
|
+
address component = msg.sender;
|
145
|
+
instance.getInstanceAdmin().setComponentLocked(
|
146
|
+
component,
|
147
|
+
locked);
|
148
|
+
emit LogComponentServiceComponentLocked(component, locked);
|
155
149
|
}
|
156
150
|
|
151
|
+
|
157
152
|
/// @inheritdoc IComponentService
|
158
153
|
function withdrawFees(Amount amount)
|
159
154
|
external
|
160
155
|
virtual
|
156
|
+
restricted()
|
161
157
|
returns (Amount withdrawnAmount)
|
162
158
|
{
|
163
159
|
// checks
|
164
|
-
(NftId componentNftId, IInstance instance) =
|
160
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
165
161
|
InstanceReader instanceReader = instance.getInstanceReader();
|
166
162
|
|
167
163
|
// determine withdrawn amount
|
@@ -206,50 +202,70 @@ contract ComponentService is
|
|
206
202
|
|
207
203
|
//-------- product ------------------------------------------------------//
|
208
204
|
|
209
|
-
|
205
|
+
/// @inheritdoc IComponentService
|
206
|
+
function registerProduct(address productAddress, address token)
|
210
207
|
external
|
211
208
|
virtual
|
209
|
+
restricted()
|
212
210
|
nonReentrant()
|
213
|
-
onlyComponent(productAddress)
|
214
211
|
returns (NftId productNftId)
|
215
212
|
{
|
216
|
-
//
|
217
|
-
|
218
|
-
|
219
|
-
(,
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
// get product
|
224
|
-
IProductComponent product = IProductComponent(productAddress);
|
225
|
-
|
226
|
-
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
227
|
-
// force initialization of linked components with empty values to
|
228
|
-
// ensure no components are linked upon initialization of the product
|
229
|
-
initialProductInfo.poolNftId = NftIdLib.zero();
|
230
|
-
initialProductInfo.distributionNftId = NftIdLib.zero();
|
231
|
-
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
|
+
}
|
232
219
|
|
233
|
-
//
|
234
|
-
|
235
|
-
|
236
|
-
|
220
|
+
// check provided address is product contract
|
221
|
+
if (!_isProduct(productAddress)) {
|
222
|
+
revert ErrorComponentServiceNotProduct(productAddress);
|
223
|
+
}
|
237
224
|
|
238
|
-
|
239
|
-
|
240
|
-
|
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);
|
237
|
+
}
|
238
|
+
|
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);
|
241
255
|
}
|
242
256
|
|
243
257
|
|
258
|
+
/// @inheritdoc IComponentService
|
244
259
|
function setProductFees(
|
245
260
|
Fee memory productFee, // product fee on net premium
|
246
261
|
Fee memory processingFee // product fee on payout amounts
|
247
262
|
)
|
248
263
|
external
|
249
264
|
virtual
|
265
|
+
restricted()
|
250
266
|
nonReentrant()
|
251
267
|
{
|
252
|
-
(NftId productNftId, IInstance instance) =
|
268
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
|
253
269
|
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
254
270
|
bool feesChanged = false;
|
255
271
|
|
@@ -268,31 +284,54 @@ contract ComponentService is
|
|
268
284
|
}
|
269
285
|
|
270
286
|
if(feesChanged) {
|
271
|
-
instance.
|
287
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
272
288
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
273
289
|
}
|
274
290
|
}
|
275
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
|
+
|
276
320
|
//-------- distribution -------------------------------------------------//
|
277
321
|
|
278
322
|
/// @dev registers the sending component as a distribution component
|
279
|
-
function
|
323
|
+
function _createDistribution(
|
324
|
+
InstanceStore instanceStore,
|
325
|
+
ProductStore productStore,
|
326
|
+
NftId productNftId,
|
327
|
+
NftId distributionNftId,
|
328
|
+
IComponents.ProductInfo memory productInfo
|
329
|
+
)
|
280
330
|
internal
|
281
331
|
virtual
|
282
332
|
nonReentrant()
|
283
|
-
returns (NftId distributionNftId)
|
284
333
|
{
|
285
|
-
// register/create component info
|
286
|
-
InstanceReader instanceReader;
|
287
|
-
InstanceAdmin instanceAdmin;
|
288
|
-
InstanceStore instanceStore;
|
289
|
-
NftId productNftId;
|
290
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
291
|
-
distributioAddress,
|
292
|
-
DISTRIBUTION());
|
293
|
-
|
294
334
|
// check product is still expecting a distribution registration
|
295
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
296
335
|
if (!productInfo.hasDistribution) {
|
297
336
|
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
298
337
|
}
|
@@ -302,7 +341,7 @@ contract ComponentService is
|
|
302
341
|
|
303
342
|
// set distribution in product info
|
304
343
|
productInfo.distributionNftId = distributionNftId;
|
305
|
-
|
344
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
306
345
|
}
|
307
346
|
|
308
347
|
|
@@ -312,8 +351,9 @@ contract ComponentService is
|
|
312
351
|
)
|
313
352
|
external
|
314
353
|
virtual
|
354
|
+
restricted()
|
315
355
|
{
|
316
|
-
(NftId distributionNftId, IInstance instance) =
|
356
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyComponent(DISTRIBUTION(), true);
|
317
357
|
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
318
358
|
instance.getInstanceReader(), distributionNftId);
|
319
359
|
bool feesChanged = false;
|
@@ -333,30 +373,24 @@ contract ComponentService is
|
|
333
373
|
}
|
334
374
|
|
335
375
|
if(feesChanged) {
|
336
|
-
instance.
|
376
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
337
377
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
338
378
|
}
|
339
379
|
}
|
340
380
|
|
341
381
|
//-------- oracle -------------------------------------------------------//
|
342
382
|
|
343
|
-
function
|
383
|
+
function _createOracle(
|
384
|
+
InstanceStore instanceStore,
|
385
|
+
ProductStore productStore,
|
386
|
+
NftId productNftId,
|
387
|
+
NftId oracleNftId,
|
388
|
+
IComponents.ProductInfo memory productInfo
|
389
|
+
)
|
344
390
|
internal
|
345
391
|
virtual
|
346
|
-
returns (NftId oracleNftId)
|
347
392
|
{
|
348
|
-
// register/create component setup
|
349
|
-
InstanceReader instanceReader;
|
350
|
-
InstanceAdmin instanceAdmin;
|
351
|
-
InstanceStore instanceStore;
|
352
|
-
NftId productNftId;
|
353
|
-
|
354
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
355
|
-
oracleAddress,
|
356
|
-
ORACLE());
|
357
|
-
|
358
393
|
// check product is still expecting an oracle registration
|
359
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
360
394
|
if (productInfo.expectedNumberOfOracles == 0) {
|
361
395
|
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
362
396
|
}
|
@@ -367,41 +401,37 @@ contract ComponentService is
|
|
367
401
|
// update/add oracle to product info
|
368
402
|
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
369
403
|
productInfo.numberOfOracles++;
|
370
|
-
|
404
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
371
405
|
}
|
372
406
|
|
373
407
|
//-------- pool ---------------------------------------------------------//
|
374
408
|
|
375
|
-
function
|
409
|
+
function _createPool(
|
410
|
+
InstanceStore instanceStore,
|
411
|
+
ProductStore productStore,
|
412
|
+
NftId productNftId,
|
413
|
+
NftId poolNftId,
|
414
|
+
address componentAddress,
|
415
|
+
IComponents.ProductInfo memory productInfo
|
416
|
+
)
|
376
417
|
internal
|
377
418
|
virtual
|
378
|
-
returns (NftId poolNftId)
|
379
419
|
{
|
380
|
-
// register/create component setup
|
381
|
-
InstanceReader instanceReader;
|
382
|
-
InstanceAdmin instanceAdmin;
|
383
|
-
InstanceStore instanceStore;
|
384
|
-
NftId productNftId;
|
385
|
-
|
386
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
387
|
-
poolAddress,
|
388
|
-
POOL());
|
389
|
-
|
390
420
|
// check product is still expecting a pool registration
|
391
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
421
|
+
//IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
392
422
|
if (productInfo.poolNftId.gtz()) {
|
393
423
|
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
394
424
|
}
|
395
425
|
|
396
426
|
// create info
|
397
|
-
IPoolComponent pool = IPoolComponent(
|
427
|
+
IPoolComponent pool = IPoolComponent(componentAddress);
|
398
428
|
instanceStore.createPool(
|
399
429
|
poolNftId,
|
400
430
|
pool.getInitialPoolInfo());
|
401
431
|
|
402
432
|
// update pool in product info
|
403
433
|
productInfo.poolNftId = poolNftId;
|
404
|
-
|
434
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
405
435
|
}
|
406
436
|
|
407
437
|
|
@@ -412,8 +442,9 @@ contract ComponentService is
|
|
412
442
|
)
|
413
443
|
external
|
414
444
|
virtual
|
445
|
+
restricted()
|
415
446
|
{
|
416
|
-
(NftId poolNftId, IInstance instance) =
|
447
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
|
417
448
|
|
418
449
|
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
419
450
|
instance.getInstanceReader(), poolNftId);
|
@@ -441,64 +472,79 @@ contract ComponentService is
|
|
441
472
|
}
|
442
473
|
|
443
474
|
if(feesChanged) {
|
444
|
-
instance.
|
475
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
445
476
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
446
477
|
}
|
447
478
|
}
|
448
479
|
|
480
|
+
|
449
481
|
/// @dev Registers the component represented by the provided address.
|
450
|
-
|
451
|
-
|
452
|
-
|
482
|
+
/// The caller must ensure componentAddress is IInstanceLinkedComponent.
|
483
|
+
function _verifyAndRegister(
|
484
|
+
IInstance instance,
|
485
|
+
address componentAddress,
|
486
|
+
NftId parentNftId,
|
487
|
+
address token
|
453
488
|
)
|
454
489
|
internal
|
455
490
|
virtual
|
456
|
-
returns (
|
457
|
-
InstanceReader instanceReader,
|
458
|
-
InstanceAdmin instanceAdmin,
|
459
|
-
InstanceStore instanceStore,
|
460
|
-
NftId parentNftId,
|
461
|
-
NftId componentNftId
|
462
|
-
)
|
491
|
+
returns (NftId componentNftId)
|
463
492
|
{
|
464
|
-
NftId instanceNftId;
|
465
|
-
IInstance instance;
|
466
|
-
IInstanceLinkedComponent component;
|
467
|
-
address initialOwner;
|
468
|
-
|
469
493
|
(
|
470
|
-
|
471
|
-
|
472
|
-
parentNftId,
|
473
|
-
component,
|
474
|
-
initialOwner
|
494
|
+
IInstanceLinkedComponent component,
|
495
|
+
IRegistry.ObjectInfo memory objectInfo // initial component info
|
475
496
|
) = _getAndVerifyRegisterableComponent(
|
476
|
-
getRegistry(),
|
477
497
|
componentAddress,
|
478
|
-
|
498
|
+
parentNftId);
|
479
499
|
|
480
|
-
|
481
|
-
|
482
|
-
instanceAdmin = instance.getInstanceAdmin();
|
483
|
-
instanceStore = instance.getInstanceStore();
|
500
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
501
|
+
ObjectType componentType = objectInfo.objectType;
|
484
502
|
|
485
|
-
|
486
|
-
|
503
|
+
if(componentType == PRODUCT()) {
|
504
|
+
// register product with registry
|
487
505
|
componentNftId = _registryService.registerProduct(
|
488
|
-
component,
|
506
|
+
component,
|
507
|
+
objectInfo.initialOwner).nftId;
|
508
|
+
|
509
|
+
// create product info in instance store
|
510
|
+
_createProduct(instance.getProductStore(), componentNftId, componentAddress);
|
489
511
|
} else {
|
512
|
+
// register non product component with registry
|
490
513
|
componentNftId = _registryService.registerProductLinkedComponent(
|
491
|
-
component,
|
514
|
+
component,
|
515
|
+
objectInfo.objectType,
|
516
|
+
objectInfo.initialOwner).nftId;
|
517
|
+
|
518
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
519
|
+
|
520
|
+
// create non product component info in instance store
|
521
|
+
NftId productNftId = parentNftId;
|
522
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
523
|
+
if(componentType == POOL()) {
|
524
|
+
_createPool(instanceStore, instance.getProductStore(), productNftId, componentNftId, componentAddress, productInfo);
|
525
|
+
} else if(componentType == DISTRIBUTION()) {
|
526
|
+
_createDistribution(instanceStore, instance.getProductStore(), productNftId, componentNftId, productInfo);
|
527
|
+
} else if(componentType == ORACLE()) {
|
528
|
+
_createOracle(instanceStore, instance.getProductStore(), productNftId, componentNftId, productInfo);
|
529
|
+
} else {
|
530
|
+
revert ErrorComponentServiceComponentTypeNotSupported(componentAddress, componentType);
|
531
|
+
}
|
532
|
+
|
533
|
+
// get product's token
|
534
|
+
token = address(instanceReader.getTokenHandler(productNftId).TOKEN());
|
492
535
|
}
|
493
536
|
|
537
|
+
_checkToken(instance, token);
|
538
|
+
|
539
|
+
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
540
|
+
|
494
541
|
// deploy and wire token handler
|
495
542
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
496
|
-
IERC20Metadata token = componentInfo.token;
|
497
543
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
498
544
|
address(getRegistry()),
|
499
545
|
address(component), // initially, component is its own wallet
|
500
|
-
|
501
|
-
|
546
|
+
token,
|
547
|
+
instanceAdmin.authority());
|
502
548
|
|
503
549
|
// register component with instance
|
504
550
|
instanceStore.createComponent(
|
@@ -509,9 +555,33 @@ contract ComponentService is
|
|
509
555
|
component.linkToRegisteredNftId();
|
510
556
|
|
511
557
|
// authorize
|
512
|
-
instanceAdmin.initializeComponentAuthorization(
|
558
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
|
559
|
+
|
560
|
+
emit LogComponentServiceRegistered(
|
561
|
+
instance.getNftId(),
|
562
|
+
componentNftId,
|
563
|
+
componentType,
|
564
|
+
address(component),
|
565
|
+
token,
|
566
|
+
objectInfo.initialOwner);
|
567
|
+
}
|
568
|
+
|
513
569
|
|
514
|
-
|
570
|
+
function _checkToken(IInstance instance, address token)
|
571
|
+
internal
|
572
|
+
view
|
573
|
+
{
|
574
|
+
if (! instance.isTokenRegistryDisabled()) {
|
575
|
+
// check if provided token is whitelisted and active
|
576
|
+
if (!ContractLib.isActiveToken(
|
577
|
+
getRegistry().getTokenRegistryAddress(),
|
578
|
+
ChainIdLib.current(),
|
579
|
+
token,
|
580
|
+
AccessManagerCloneable(authority()).getRelease())
|
581
|
+
) {
|
582
|
+
revert ErrorComponentServiceTokenInvalid(token);
|
583
|
+
}
|
584
|
+
}
|
515
585
|
}
|
516
586
|
|
517
587
|
|
@@ -548,98 +618,44 @@ contract ComponentService is
|
|
548
618
|
|
549
619
|
/// @dev Based on the provided component address required type the component
|
550
620
|
/// and related instance contract this function reverts iff:
|
551
|
-
/// - the
|
552
|
-
/// - the component
|
553
|
-
/// - the component type does not match with the required type
|
621
|
+
/// - the component parent does not match with the required parent
|
622
|
+
/// - the component release does not match with the service release
|
554
623
|
/// - the component has already been registered
|
555
624
|
function _getAndVerifyRegisterableComponent(
|
556
|
-
IRegistry registry,
|
557
625
|
address componentAddress,
|
558
|
-
|
626
|
+
NftId requiredParent
|
559
627
|
)
|
560
628
|
internal
|
561
629
|
view
|
562
630
|
returns (
|
563
|
-
NftId instanceNftId,
|
564
|
-
IInstance instance,
|
565
|
-
NftId parentNftId,
|
566
631
|
IInstanceLinkedComponent component,
|
567
|
-
|
632
|
+
IRegistry.ObjectInfo memory info
|
568
633
|
)
|
569
634
|
{
|
570
|
-
// check sender (instance or product) is registered
|
571
|
-
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
572
|
-
if (senderInfo.nftId.eqz()) {
|
573
|
-
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
574
|
-
}
|
575
|
-
|
576
|
-
// the sender is the parent of the component to be registered
|
577
|
-
// an instance caller wanting to register a product - or -
|
578
|
-
// a product caller wantint go register a distribution, oracle or pool
|
579
|
-
parentNftId = senderInfo.nftId;
|
580
|
-
|
581
|
-
// check component is of required type
|
582
635
|
component = IInstanceLinkedComponent(componentAddress);
|
583
|
-
|
584
|
-
if(info.objectType != requiredType) {
|
585
|
-
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
586
|
-
}
|
636
|
+
info = component.getInitialInfo();
|
587
637
|
|
588
|
-
// check component
|
589
|
-
if
|
590
|
-
revert
|
638
|
+
// check component parent
|
639
|
+
if(info.parentNftId != requiredParent) {
|
640
|
+
revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
|
591
641
|
}
|
592
642
|
|
593
|
-
// component release
|
594
|
-
|
595
|
-
|
596
|
-
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), getRelease());
|
597
|
-
// component release matches parent release
|
598
|
-
} else if (component.getRelease() != IRegisterable(parentAddress).getRelease()){
|
599
|
-
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
643
|
+
// check component release (must match with service release)
|
644
|
+
if(component.getRelease() != getRelease()) {
|
645
|
+
revert ErrorComponentServiceComponentReleaseMismatch(componentAddress, getRelease(), component.getRelease());
|
600
646
|
}
|
601
647
|
|
602
|
-
// check component
|
603
|
-
|
604
|
-
|
605
|
-
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
606
|
-
}
|
607
|
-
|
608
|
-
// verify parent is registered instance
|
609
|
-
if (requiredType == PRODUCT()) {
|
610
|
-
if (senderInfo.objectType != INSTANCE()) {
|
611
|
-
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
612
|
-
}
|
613
|
-
|
614
|
-
instanceNftId = senderInfo.nftId;
|
615
|
-
// verify parent is registered product
|
616
|
-
} else {
|
617
|
-
if (senderInfo.objectType != PRODUCT()) {
|
618
|
-
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
619
|
-
}
|
620
|
-
|
621
|
-
instanceNftId = senderInfo.parentNftId;
|
648
|
+
// check component has not already been registered
|
649
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
650
|
+
revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
|
622
651
|
}
|
623
|
-
|
624
|
-
// get initial owner and instance
|
625
|
-
initialOwner = info.initialOwner;
|
626
|
-
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
627
652
|
}
|
628
653
|
|
654
|
+
|
629
655
|
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
630
656
|
instanceAdmin.setTargetLocked(componentAddress, locked);
|
631
657
|
}
|
632
658
|
|
633
|
-
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
634
|
-
internal
|
635
|
-
view
|
636
|
-
returns (
|
637
|
-
NftId componentNftId,
|
638
|
-
IInstance instance
|
639
|
-
)
|
640
|
-
{
|
641
|
-
return _getAndVerifyComponent(expectedType, true); // only active
|
642
|
-
}
|
643
659
|
|
644
660
|
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
645
661
|
internal
|
@@ -670,13 +686,8 @@ contract ComponentService is
|
|
670
686
|
instance = IInstance(instanceAddress);
|
671
687
|
}
|
672
688
|
|
689
|
+
|
673
690
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
674
691
|
return COMPONENT();
|
675
692
|
}
|
676
|
-
|
677
|
-
function _checkSupportsInterface(address component) internal view {
|
678
|
-
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
679
|
-
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
680
|
-
}
|
681
|
-
}
|
682
693
|
}
|