@etherisc/gif-next 0.0.2-b2910e7-757 → 0.0.2-b2e620f-736
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/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
- 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 +82 -12
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +77 -65
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +51 -39
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +117 -110
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -26
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +27 -3
- 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 +102 -42
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +260 -185
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
- 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 +117 -54
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -63
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -48
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +306 -147
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -21
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +150 -41
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +355 -99
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +549 -218
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +87 -60
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/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 +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +68 -56
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
- 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 +38 -26
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -40
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +98 -83
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +40 -22
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -39
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -310
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -83
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -122
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -26
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -39
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +241 -302
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -45
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +91 -65
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -22
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -130
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -55
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -117
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -181
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +51 -45
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +157 -130
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +26 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +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 +316 -50
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +51 -39
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +119 -514
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +38 -72
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +435 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +45 -327
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -26
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- 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/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 +120 -1
- 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 +27 -3
- 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 +51 -39
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- 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 +2 -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 +118 -62
- 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 +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +38 -26
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +56 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +90 -57
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +27 -19
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -51
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +18 -20
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- 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 +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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 +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- 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 +62 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- 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/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +177 -84
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +277 -229
- package/contracts/authorization/IAccessAdmin.sol +13 -7
- package/contracts/authorization/IAuthorization.sol +15 -1
- package/contracts/distribution/BasicDistribution.sol +4 -4
- package/contracts/distribution/BasicDistributionAuthorization.sol +21 -8
- package/contracts/distribution/Distribution.sol +27 -24
- package/contracts/distribution/DistributionService.sol +18 -15
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/examples/fire/FirePool.sol +6 -2
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +8 -1
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +32 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -7
- package/contracts/instance/IInstanceService.sol +7 -1
- package/contracts/instance/Instance.sol +41 -16
- package/contracts/instance/InstanceAdmin.sol +241 -76
- package/contracts/instance/InstanceAuthorizationV3.sol +53 -31
- package/contracts/instance/InstanceReader.sol +162 -32
- package/contracts/instance/InstanceService.sol +59 -35
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +3 -2
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -74
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPoolAuthorization.sol +21 -13
- package/contracts/pool/BundleService.sol +35 -125
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +13 -38
- package/contracts/pool/IPoolService.sol +49 -56
- package/contracts/pool/Pool.sol +9 -9
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +323 -186
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +2 -0
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -139
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +23 -10
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/PolicyService.sol +269 -257
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +53 -7
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +8 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +7 -2
- package/contracts/registry/RegistryAdmin.sol +129 -237
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +127 -101
- package/contracts/registry/ServiceAuthorizationV3.sol +163 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +30 -38
- package/contracts/shared/ComponentService.sol +165 -302
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/ContractLib.sol +208 -9
- package/contracts/shared/IComponent.sol +3 -9
- package/contracts/shared/IComponentService.sol +2 -27
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +3 -3
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +45 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +40 -96
- package/contracts/staking/IStaking.sol +0 -8
- package/contracts/staking/IStakingService.sol +8 -0
- package/contracts/staking/StakeManagerLib.sol +1 -1
- package/contracts/staking/Staking.sol +34 -13
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +32 -55
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +24 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +1 -1
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
@@ -3,11 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {
|
7
|
-
import {Amount, AmountLib} from "../type/Amount.sol";
|
8
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
9
|
-
import {ContractLib} from "../shared/ContractLib.sol";
|
10
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
11
7
|
import {IComponent} from "../shared/IComponent.sol";
|
12
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
13
9
|
import {IComponentService} from "./IComponentService.sol";
|
@@ -17,51 +13,54 @@ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
|
17
13
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
18
14
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
19
15
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
20
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
21
16
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
22
17
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
18
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
23
19
|
import {IRegistry} from "../registry/IRegistry.sol";
|
24
20
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
21
|
+
|
22
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
23
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
24
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
25
25
|
import {KEEP_STATE} from "../type/StateId.sol";
|
26
|
-
import {NftId} from "../type/NftId.sol";
|
27
|
-
import {ObjectType,
|
26
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
27
|
+
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
28
|
+
import {Service} from "../shared/Service.sol";
|
28
29
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
29
30
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
30
31
|
import {VersionPart} from "../type/Version.sol";
|
31
32
|
|
33
|
+
|
32
34
|
contract ComponentService is
|
33
|
-
|
35
|
+
Service,
|
34
36
|
IComponentService
|
35
37
|
{
|
36
|
-
|
37
38
|
bool private constant INCREASE = true;
|
38
39
|
bool private constant DECREASE = false;
|
39
40
|
|
41
|
+
IAccountingService private _accountingService;
|
40
42
|
IRegistryService private _registryService;
|
41
43
|
IInstanceService private _instanceService;
|
42
44
|
|
43
45
|
modifier onlyComponent(address component) {
|
44
|
-
|
45
|
-
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
46
|
-
}
|
46
|
+
_checkSupportsInterface(component);
|
47
47
|
_;
|
48
48
|
}
|
49
49
|
|
50
50
|
modifier onlyInstance() {
|
51
|
-
address instanceAddress = msg.sender;
|
52
51
|
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
53
52
|
if (instanceNftId.eqz()) {
|
54
|
-
revert ErrorComponentServiceNotRegistered(
|
53
|
+
revert ErrorComponentServiceNotRegistered(msg.sender);
|
55
54
|
}
|
56
55
|
|
57
56
|
ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
|
58
57
|
if (objectType != INSTANCE()) {
|
59
|
-
revert ErrorComponentServiceNotInstance(
|
58
|
+
revert ErrorComponentServiceNotInstance(msg.sender, objectType);
|
60
59
|
}
|
61
60
|
|
62
|
-
VersionPart instanceVersion = IInstance(
|
61
|
+
VersionPart instanceVersion = IInstance(msg.sender).getRelease();
|
63
62
|
if (instanceVersion != getVersion().toMajorPart()) {
|
64
|
-
revert ErrorComponentServiceInstanceVersionMismatch(
|
63
|
+
revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
|
65
64
|
}
|
66
65
|
|
67
66
|
_;
|
@@ -77,12 +76,13 @@ contract ComponentService is
|
|
77
76
|
initializer()
|
78
77
|
{
|
79
78
|
(
|
80
|
-
address
|
81
|
-
address
|
79
|
+
address authority,
|
80
|
+
address registry
|
82
81
|
) = abi.decode(data, (address, address));
|
83
82
|
|
84
|
-
|
83
|
+
__Service_init(authority, registry, owner);
|
85
84
|
|
85
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
86
86
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
87
87
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
88
88
|
|
@@ -121,7 +121,7 @@ contract ComponentService is
|
|
121
121
|
virtual
|
122
122
|
{
|
123
123
|
// checks
|
124
|
-
(NftId componentNftId
|
124
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
125
125
|
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
126
126
|
componentNftId).tokenHandler;
|
127
127
|
|
@@ -130,32 +130,12 @@ contract ComponentService is
|
|
130
130
|
}
|
131
131
|
|
132
132
|
|
133
|
-
function approveStakingTokenHandler(
|
134
|
-
IERC20Metadata token,
|
135
|
-
Amount amount
|
136
|
-
)
|
137
|
-
external
|
138
|
-
virtual
|
139
|
-
{
|
140
|
-
// checks
|
141
|
-
NftId stakingNftId = getRegistry().getNftIdForAddress(msg.sender);
|
142
|
-
(IRegistry.ObjectInfo memory objectInfo,) = _getAndVerifyComponentInfo(
|
143
|
-
stakingNftId,
|
144
|
-
STAKING(),
|
145
|
-
true);
|
146
|
-
|
147
|
-
// effects
|
148
|
-
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
149
|
-
tokenHandler.approve(token, amount);
|
150
|
-
}
|
151
|
-
|
152
|
-
|
153
133
|
function setWallet(address newWallet)
|
154
134
|
external
|
155
135
|
virtual
|
156
136
|
{
|
157
137
|
// checks
|
158
|
-
(NftId componentNftId
|
138
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
159
139
|
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
160
140
|
componentNftId).tokenHandler;
|
161
141
|
|
@@ -164,56 +144,63 @@ contract ComponentService is
|
|
164
144
|
}
|
165
145
|
|
166
146
|
/// @inheritdoc IComponentService
|
167
|
-
function
|
147
|
+
function setComponentLocked(address componentAddress, bool locked)
|
168
148
|
external
|
169
149
|
virtual
|
170
|
-
|
150
|
+
restricted()
|
171
151
|
{
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
152
|
+
// TODO inactive component can lock/unlock other components?
|
153
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
154
|
+
instance.setLockedFromService(componentAddress, locked);
|
176
155
|
}
|
177
156
|
|
178
157
|
/// @inheritdoc IComponentService
|
179
|
-
function setLockedFromComponent(address componentAddress, bool locked)
|
180
|
-
external
|
181
|
-
virtual
|
182
|
-
onlyComponent(msg.sender)
|
183
|
-
{
|
184
|
-
(,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
185
|
-
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
186
|
-
}
|
187
|
-
|
188
158
|
function withdrawFees(Amount amount)
|
189
159
|
external
|
190
160
|
virtual
|
191
161
|
returns (Amount withdrawnAmount)
|
192
162
|
{
|
193
|
-
|
194
|
-
|
195
|
-
|
163
|
+
// checks
|
164
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
165
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
196
166
|
|
197
167
|
// determine withdrawn amount
|
168
|
+
Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
|
198
169
|
withdrawnAmount = amount;
|
199
|
-
|
200
|
-
|
201
|
-
|
170
|
+
|
171
|
+
// max amount -> withraw all available fees
|
172
|
+
if (amount == AmountLib.max()) {
|
173
|
+
withdrawnAmount = maxAvailableAmount;
|
174
|
+
}
|
175
|
+
|
176
|
+
// check modified withdrawn amount
|
177
|
+
if (withdrawnAmount.eqz()) {
|
202
178
|
revert ErrorComponentServiceWithdrawAmountIsZero();
|
203
|
-
} else {
|
204
|
-
|
205
|
-
if (withdrawnAmount.gt(withdrawLimit)) {
|
206
|
-
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
207
|
-
}
|
179
|
+
} else if (withdrawnAmount > maxAvailableAmount) {
|
180
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
|
208
181
|
}
|
209
182
|
|
183
|
+
// effects
|
210
184
|
// decrease fee counters by withdrawnAmount
|
211
|
-
|
185
|
+
_accountingService.decreaseComponentFees(
|
186
|
+
instance.getInstanceStore(),
|
187
|
+
componentNftId,
|
188
|
+
withdrawnAmount);
|
212
189
|
|
213
190
|
// transfer amount to component owner
|
214
191
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
215
|
-
|
216
|
-
|
192
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
|
193
|
+
emit LogComponentServiceComponentFeesWithdrawn(
|
194
|
+
componentNftId,
|
195
|
+
componentOwner,
|
196
|
+
address(tokenHandler.TOKEN()),
|
197
|
+
withdrawnAmount);
|
198
|
+
|
199
|
+
// interactions
|
200
|
+
// transfer amount to component owner
|
201
|
+
tokenHandler.pushFeeToken(
|
202
|
+
componentOwner,
|
203
|
+
withdrawnAmount);
|
217
204
|
}
|
218
205
|
|
219
206
|
|
@@ -222,6 +209,7 @@ contract ComponentService is
|
|
222
209
|
function registerProduct(address productAddress)
|
223
210
|
external
|
224
211
|
virtual
|
212
|
+
nonReentrant()
|
225
213
|
onlyComponent(productAddress)
|
226
214
|
returns (NftId productNftId)
|
227
215
|
{
|
@@ -234,14 +222,22 @@ contract ComponentService is
|
|
234
222
|
|
235
223
|
// get product
|
236
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);
|
237
232
|
|
238
233
|
// create info
|
239
234
|
instanceStore.createProduct(
|
240
235
|
productNftId,
|
241
|
-
|
236
|
+
initialProductInfo);
|
242
237
|
|
243
|
-
|
244
|
-
|
238
|
+
instanceStore.createFee(
|
239
|
+
productNftId,
|
240
|
+
product.getInitialFeeInfo());
|
245
241
|
}
|
246
242
|
|
247
243
|
|
@@ -251,62 +247,39 @@ contract ComponentService is
|
|
251
247
|
)
|
252
248
|
external
|
253
249
|
virtual
|
250
|
+
nonReentrant()
|
254
251
|
{
|
255
|
-
(NftId productNftId
|
256
|
-
IComponents.
|
252
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
253
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
257
254
|
bool feesChanged = false;
|
258
255
|
|
259
256
|
// update product fee if required
|
260
|
-
if(!FeeLib.eq(
|
261
|
-
_logUpdateFee(productNftId, "ProductFee",
|
262
|
-
|
257
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
258
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
259
|
+
feeInfo.productFee = productFee;
|
263
260
|
feesChanged = true;
|
264
261
|
}
|
265
262
|
|
266
263
|
// update processing fee if required
|
267
|
-
if(!FeeLib.eq(
|
268
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
269
|
-
|
264
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
265
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
266
|
+
feeInfo.processingFee = processingFee;
|
270
267
|
feesChanged = true;
|
271
268
|
}
|
272
269
|
|
273
270
|
if(feesChanged) {
|
274
|
-
instance.getInstanceStore().
|
271
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
275
272
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
276
273
|
}
|
277
274
|
}
|
278
275
|
|
279
|
-
function increaseProductFees(
|
280
|
-
InstanceStore instanceStore,
|
281
|
-
NftId productNftId,
|
282
|
-
Amount feeAmount
|
283
|
-
)
|
284
|
-
external
|
285
|
-
virtual
|
286
|
-
// TODO re-enable once role granting is stable and fixed
|
287
|
-
// restricted()
|
288
|
-
{
|
289
|
-
_checkNftType(productNftId, PRODUCT());
|
290
|
-
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
291
|
-
}
|
292
|
-
|
293
|
-
|
294
|
-
function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
|
295
|
-
external
|
296
|
-
virtual
|
297
|
-
// TODO re-enable once role granting is stable and fixed
|
298
|
-
// restricted()
|
299
|
-
{
|
300
|
-
_checkNftType(productNftId, PRODUCT());
|
301
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
302
|
-
}
|
303
|
-
|
304
276
|
//-------- distribution -------------------------------------------------//
|
305
277
|
|
306
278
|
/// @dev registers the sending component as a distribution component
|
307
279
|
function _registerDistribution(address distributioAddress)
|
308
280
|
internal
|
309
281
|
virtual
|
282
|
+
nonReentrant()
|
310
283
|
returns (NftId distributionNftId)
|
311
284
|
{
|
312
285
|
// register/create component info
|
@@ -330,10 +303,6 @@ contract ComponentService is
|
|
330
303
|
// set distribution in product info
|
331
304
|
productInfo.distributionNftId = distributionNftId;
|
332
305
|
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
333
|
-
|
334
|
-
// authorize
|
335
|
-
instanceAdmin.initializeComponentAuthorization(
|
336
|
-
IInstanceLinkedComponent(distributioAddress));
|
337
306
|
}
|
338
307
|
|
339
308
|
|
@@ -344,94 +313,31 @@ contract ComponentService is
|
|
344
313
|
external
|
345
314
|
virtual
|
346
315
|
{
|
347
|
-
(NftId distributionNftId
|
348
|
-
(NftId productNftId, IComponents.
|
316
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
317
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
349
318
|
instance.getInstanceReader(), distributionNftId);
|
350
319
|
bool feesChanged = false;
|
351
320
|
|
352
321
|
// update distributino fee if required
|
353
|
-
if(!FeeLib.eq(
|
354
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
355
|
-
|
322
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
323
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
324
|
+
feeInfo.distributionFee = distributionFee;
|
356
325
|
feesChanged = true;
|
357
326
|
}
|
358
327
|
|
359
328
|
// update min distribution owner fee if required
|
360
|
-
if(!FeeLib.eq(
|
361
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
362
|
-
|
329
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
330
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
331
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
363
332
|
feesChanged = true;
|
364
333
|
}
|
365
334
|
|
366
335
|
if(feesChanged) {
|
367
|
-
instance.getInstanceStore().
|
336
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
368
337
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
369
338
|
}
|
370
339
|
}
|
371
340
|
|
372
|
-
function increaseDistributionBalance(
|
373
|
-
InstanceStore instanceStore,
|
374
|
-
NftId distributionNftId,
|
375
|
-
Amount amount,
|
376
|
-
Amount feeAmount
|
377
|
-
)
|
378
|
-
external
|
379
|
-
virtual
|
380
|
-
// TODO re-enable once role granting is stable and fixed
|
381
|
-
// restricted()
|
382
|
-
{
|
383
|
-
_checkNftType(distributionNftId, DISTRIBUTION());
|
384
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
385
|
-
}
|
386
|
-
|
387
|
-
|
388
|
-
function decreaseDistributionBalance(
|
389
|
-
InstanceStore instanceStore,
|
390
|
-
NftId distributionNftId,
|
391
|
-
Amount amount,
|
392
|
-
Amount feeAmount
|
393
|
-
)
|
394
|
-
external
|
395
|
-
virtual
|
396
|
-
// TODO re-enable once role granting is stable and fixed
|
397
|
-
// restricted()
|
398
|
-
{
|
399
|
-
_checkNftType(distributionNftId, DISTRIBUTION());
|
400
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
401
|
-
}
|
402
|
-
|
403
|
-
//-------- distributor -------------------------------------------------------//
|
404
|
-
|
405
|
-
function increaseDistributorBalance(
|
406
|
-
InstanceStore instanceStore,
|
407
|
-
NftId distributorNftId,
|
408
|
-
Amount amount,
|
409
|
-
Amount feeAmount
|
410
|
-
)
|
411
|
-
external
|
412
|
-
virtual
|
413
|
-
// TODO re-enable once role granting is stable and fixed
|
414
|
-
// restricted()
|
415
|
-
{
|
416
|
-
_checkNftType(distributorNftId, DISTRIBUTOR());
|
417
|
-
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
418
|
-
}
|
419
|
-
|
420
|
-
function decreaseDistributorBalance(
|
421
|
-
InstanceStore instanceStore,
|
422
|
-
NftId distributorNftId,
|
423
|
-
Amount amount,
|
424
|
-
Amount feeAmount
|
425
|
-
)
|
426
|
-
external
|
427
|
-
virtual
|
428
|
-
// TODO re-enable once role granting is stable and fixed
|
429
|
-
// restricted()
|
430
|
-
{
|
431
|
-
_checkNftType(distributorNftId, DISTRIBUTOR());
|
432
|
-
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
433
|
-
}
|
434
|
-
|
435
341
|
//-------- oracle -------------------------------------------------------//
|
436
342
|
|
437
343
|
function _registerOracle(address oracleAddress)
|
@@ -445,7 +351,7 @@ contract ComponentService is
|
|
445
351
|
InstanceStore instanceStore;
|
446
352
|
NftId productNftId;
|
447
353
|
|
448
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
354
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
449
355
|
oracleAddress,
|
450
356
|
ORACLE());
|
451
357
|
|
@@ -462,10 +368,6 @@ contract ComponentService is
|
|
462
368
|
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
463
369
|
productInfo.numberOfOracles++;
|
464
370
|
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
465
|
-
|
466
|
-
// authorize
|
467
|
-
instanceAdmin.initializeComponentAuthorization(
|
468
|
-
IInstanceLinkedComponent(oracleAddress));
|
469
371
|
}
|
470
372
|
|
471
373
|
//-------- pool ---------------------------------------------------------//
|
@@ -481,7 +383,7 @@ contract ComponentService is
|
|
481
383
|
InstanceStore instanceStore;
|
482
384
|
NftId productNftId;
|
483
385
|
|
484
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
386
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
485
387
|
poolAddress,
|
486
388
|
POOL());
|
487
389
|
|
@@ -500,9 +402,6 @@ contract ComponentService is
|
|
500
402
|
// update pool in product info
|
501
403
|
productInfo.poolNftId = poolNftId;
|
502
404
|
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
503
|
-
|
504
|
-
// authorize
|
505
|
-
instanceAdmin.initializeComponentAuthorization(pool);
|
506
405
|
}
|
507
406
|
|
508
407
|
|
@@ -514,124 +413,39 @@ contract ComponentService is
|
|
514
413
|
external
|
515
414
|
virtual
|
516
415
|
{
|
517
|
-
(NftId poolNftId
|
518
|
-
|
416
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
417
|
+
|
418
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
519
419
|
instance.getInstanceReader(), poolNftId);
|
520
420
|
bool feesChanged = false;
|
521
421
|
|
522
422
|
// update pool fee if required
|
523
|
-
if(!FeeLib.eq(
|
524
|
-
_logUpdateFee(productNftId, "PoolFee",
|
525
|
-
|
423
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
424
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
425
|
+
feeInfo.poolFee = poolFee;
|
526
426
|
feesChanged = true;
|
527
427
|
}
|
528
428
|
|
529
429
|
// update staking fee if required
|
530
|
-
if(!FeeLib.eq(
|
531
|
-
_logUpdateFee(productNftId, "StakingFee",
|
532
|
-
|
430
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
431
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
432
|
+
feeInfo.stakingFee = stakingFee;
|
533
433
|
feesChanged = true;
|
534
434
|
}
|
535
435
|
|
536
436
|
// update performance fee if required
|
537
|
-
if(!FeeLib.eq(
|
538
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
539
|
-
|
437
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
438
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
439
|
+
feeInfo.performanceFee = performanceFee;
|
540
440
|
feesChanged = true;
|
541
441
|
}
|
542
442
|
|
543
443
|
if(feesChanged) {
|
544
|
-
instance.getInstanceStore().
|
444
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
545
445
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
546
446
|
}
|
547
447
|
}
|
548
448
|
|
549
|
-
function increasePoolBalance(
|
550
|
-
InstanceStore instanceStore,
|
551
|
-
NftId poolNftId,
|
552
|
-
Amount amount,
|
553
|
-
Amount feeAmount
|
554
|
-
)
|
555
|
-
public
|
556
|
-
virtual
|
557
|
-
// TODO re-enable once role granting is stable and fixed
|
558
|
-
// restricted()
|
559
|
-
{
|
560
|
-
_checkNftType(poolNftId, POOL());
|
561
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
562
|
-
}
|
563
|
-
|
564
|
-
function decreasePoolBalance(
|
565
|
-
InstanceStore instanceStore,
|
566
|
-
NftId poolNftId,
|
567
|
-
Amount amount,
|
568
|
-
Amount feeAmount
|
569
|
-
)
|
570
|
-
public
|
571
|
-
virtual
|
572
|
-
// TODO re-enable once role granting is stable and fixed
|
573
|
-
// restricted()
|
574
|
-
{
|
575
|
-
_checkNftType(poolNftId, POOL());
|
576
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
577
|
-
}
|
578
|
-
|
579
|
-
//-------- bundle -------------------------------------------------------//
|
580
|
-
|
581
|
-
function increaseBundleBalance(
|
582
|
-
InstanceStore instanceStore,
|
583
|
-
NftId bundleNftId,
|
584
|
-
Amount amount,
|
585
|
-
Amount feeAmount
|
586
|
-
)
|
587
|
-
external
|
588
|
-
virtual
|
589
|
-
// TODO re-enable once role granting is stable and fixed
|
590
|
-
// restricted()
|
591
|
-
{
|
592
|
-
_checkNftType(bundleNftId, BUNDLE());
|
593
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
594
|
-
}
|
595
|
-
|
596
|
-
function decreaseBundleBalance(
|
597
|
-
InstanceStore instanceStore,
|
598
|
-
NftId bundleNftId,
|
599
|
-
Amount amount,
|
600
|
-
Amount feeAmount
|
601
|
-
)
|
602
|
-
external
|
603
|
-
virtual
|
604
|
-
// TODO re-enable once role granting is stable and fixed
|
605
|
-
// restricted()
|
606
|
-
{
|
607
|
-
_checkNftType(bundleNftId, BUNDLE());
|
608
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
609
|
-
}
|
610
|
-
|
611
|
-
|
612
|
-
//-------- internal functions ------------------------------------------//
|
613
|
-
|
614
|
-
function _changeTargetBalance(
|
615
|
-
bool increase,
|
616
|
-
InstanceStore instanceStore,
|
617
|
-
NftId targetNftId,
|
618
|
-
Amount amount,
|
619
|
-
Amount feeAmount
|
620
|
-
)
|
621
|
-
internal
|
622
|
-
virtual
|
623
|
-
{
|
624
|
-
Amount totalAmount = amount + feeAmount;
|
625
|
-
|
626
|
-
if(increase) {
|
627
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
628
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
629
|
-
} else {
|
630
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
631
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
632
|
-
}
|
633
|
-
}
|
634
|
-
|
635
449
|
/// @dev Registers the component represented by the provided address.
|
636
450
|
function _register(
|
637
451
|
address componentAddress, // address of component to register
|
@@ -686,9 +500,6 @@ contract ComponentService is
|
|
686
500
|
address(token),
|
687
501
|
address(instanceAdmin.authority()));
|
688
502
|
|
689
|
-
// set token handler allowance to max
|
690
|
-
// componentInfo.tokenHandler.approve(token, AmountLib.max());
|
691
|
-
|
692
503
|
// register component with instance
|
693
504
|
instanceStore.createComponent(
|
694
505
|
componentNftId,
|
@@ -697,6 +508,9 @@ contract ComponentService is
|
|
697
508
|
// link component contract to nft id
|
698
509
|
component.linkToRegisteredNftId();
|
699
510
|
|
511
|
+
// authorize
|
512
|
+
instanceAdmin.initializeComponentAuthorization(component);
|
513
|
+
|
700
514
|
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
701
515
|
}
|
702
516
|
|
@@ -716,7 +530,7 @@ contract ComponentService is
|
|
716
530
|
}
|
717
531
|
|
718
532
|
|
719
|
-
function
|
533
|
+
function _getLinkedFeeInfo(
|
720
534
|
InstanceReader instanceReader,
|
721
535
|
NftId componentNftId
|
722
536
|
)
|
@@ -724,11 +538,11 @@ contract ComponentService is
|
|
724
538
|
view
|
725
539
|
returns(
|
726
540
|
NftId productNftId,
|
727
|
-
IComponents.
|
541
|
+
IComponents.FeeInfo memory info
|
728
542
|
)
|
729
543
|
{
|
730
|
-
productNftId =
|
731
|
-
info = instanceReader.
|
544
|
+
productNftId = getRegistry().getParentNftId(componentNftId);
|
545
|
+
info = instanceReader.getFeeInfo(productNftId);
|
732
546
|
}
|
733
547
|
|
734
548
|
|
@@ -776,9 +590,12 @@ contract ComponentService is
|
|
776
590
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
777
591
|
}
|
778
592
|
|
779
|
-
//
|
593
|
+
// component release matches servie release
|
780
594
|
address parentAddress = registry.getObjectAddress(parentNftId);
|
781
|
-
if (component.getRelease() !=
|
595
|
+
if (component.getRelease() != getRelease()) {
|
596
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), getRelease());
|
597
|
+
// component release matches parent release
|
598
|
+
} else if (component.getRelease() != IRegisterable(parentAddress).getRelease()){
|
782
599
|
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
783
600
|
}
|
784
601
|
|
@@ -806,14 +623,60 @@ contract ComponentService is
|
|
806
623
|
|
807
624
|
// get initial owner and instance
|
808
625
|
initialOwner = info.initialOwner;
|
809
|
-
instance =
|
626
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
810
627
|
}
|
811
628
|
|
812
629
|
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
813
630
|
instanceAdmin.setTargetLocked(componentAddress, locked);
|
814
631
|
}
|
815
632
|
|
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
|
+
|
644
|
+
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
645
|
+
internal
|
646
|
+
view
|
647
|
+
returns (
|
648
|
+
NftId componentNftId,
|
649
|
+
IInstance instance
|
650
|
+
)
|
651
|
+
{
|
652
|
+
IRegistry.ObjectInfo memory info;
|
653
|
+
address instanceAddress;
|
654
|
+
|
655
|
+
if (expectedType != COMPONENT()) {
|
656
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
657
|
+
getRegistry(),
|
658
|
+
msg.sender, // caller
|
659
|
+
expectedType,
|
660
|
+
isActive);
|
661
|
+
} else {
|
662
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
663
|
+
getRegistry(),
|
664
|
+
msg.sender,
|
665
|
+
isActive);
|
666
|
+
}
|
667
|
+
|
668
|
+
// get component nft id and instance
|
669
|
+
componentNftId = info.nftId;
|
670
|
+
instance = IInstance(instanceAddress);
|
671
|
+
}
|
672
|
+
|
816
673
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
817
674
|
return COMPONENT();
|
818
675
|
}
|
676
|
+
|
677
|
+
function _checkSupportsInterface(address component) internal view {
|
678
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
679
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
680
|
+
}
|
681
|
+
}
|
819
682
|
}
|