@etherisc/gif-next 0.0.2-f1f3b2c-994 → 0.0.2-f2273b3-211
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 +27 -6
- 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 +163 -55
- 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 +200 -16
- 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 +94 -14
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +8 -8
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +113 -130
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +275 -171
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +111 -65
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
- 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 +158 -195
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +336 -295
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
- 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 +215 -168
- 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 +156 -153
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
- 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 +717 -292
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- 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 +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +386 -117
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +590 -204
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +445 -375
- 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 +3 -3
- 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 +132 -173
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- 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 +94 -106
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +108 -125
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +156 -326
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
- 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 +330 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +130 -54
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +71 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
- 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 +102 -64
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +181 -116
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +224 -182
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +112 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
- 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 +98 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- 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/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +142 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +277 -213
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
- 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 +3 -3
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +337 -65
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +12 -12
- 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 +105 -104
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -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 +92 -86
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +94 -106
- 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/INftOwnable.sol/INftOwnable.json +16 -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 +148 -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 +55 -2
- 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 +107 -124
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.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 +18 -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 +152 -38
- 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 +55 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -136
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -49
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -206
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +3 -3
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -57
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +181 -55
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +130 -130
- 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 +44 -12
- 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 +216 -125
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -205
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +14 -8
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +41 -47
- package/contracts/distribution/DistributionService.sol +100 -78
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +25 -10
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +40 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +17 -10
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +52 -34
- package/contracts/instance/InstanceAdmin.sol +249 -100
- package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +85 -146
- 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 +10 -7
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +107 -78
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +88 -154
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -64
- package/contracts/pool/Pool.sol +112 -120
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +436 -242
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +24 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -12
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +202 -151
- 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 +26 -11
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +10 -1
- package/contracts/product/PolicyService.sol +248 -252
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +30 -26
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -60
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +14 -15
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +29 -6
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +40 -58
- 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 +139 -124
- package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +69 -118
- package/contracts/shared/ComponentService.sol +422 -371
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +8 -20
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +68 -42
- package/contracts/shared/Lifecycle.sol +7 -7
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +53 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +9 -31
- package/contracts/shared/TokenHandler.sol +274 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -10
- package/contracts/staking/IStakingService.sol +12 -4
- package/contracts/staking/StakeManagerLib.sol +69 -20
- package/contracts/staking/Staking.sol +73 -41
- package/contracts/staking/StakingReader.sol +1 -16
- package/contracts/staking/StakingService.sol +70 -24
- 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 +23 -15
- 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 +2 -1
- package/package.json +3 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- 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/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
@@ -1,45 +1,72 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
|
+
import {IComponent} from "../shared/IComponent.sol";
|
7
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
9
|
import {IComponentService} from "./IComponentService.sol";
|
9
10
|
import {IInstance} from "../instance/IInstance.sol";
|
10
11
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
12
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
11
13
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
14
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
13
15
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
14
16
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
15
17
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
18
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
16
19
|
import {IRegistry} from "../registry/IRegistry.sol";
|
17
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";
|
18
25
|
import {KEEP_STATE} from "../type/StateId.sol";
|
19
|
-
import {NftId} from "../type/NftId.sol";
|
20
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
21
|
-
import {
|
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";
|
29
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
22
30
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
31
|
+
import {VersionPart} from "../type/Version.sol";
|
32
|
+
|
23
33
|
|
24
34
|
contract ComponentService is
|
25
|
-
|
35
|
+
Service,
|
26
36
|
IComponentService
|
27
37
|
{
|
28
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
29
|
-
error ErrorComponentServiceNotComponent(address component);
|
30
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
31
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
32
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
33
|
-
error ErrorComponentServiceComponentLocked(address component);
|
34
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
35
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
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
|
|
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
|
+
|
69
|
+
|
43
70
|
function _initialize(
|
44
71
|
address owner,
|
45
72
|
bytes memory data
|
@@ -49,12 +76,13 @@ contract ComponentService is
|
|
49
76
|
initializer()
|
50
77
|
{
|
51
78
|
(
|
52
|
-
address
|
53
|
-
address
|
79
|
+
address authority,
|
80
|
+
address registry
|
54
81
|
) = abi.decode(data, (address, address));
|
55
82
|
|
56
|
-
|
83
|
+
__Service_init(authority, registry, owner);
|
57
84
|
|
85
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
58
86
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
59
87
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
60
88
|
|
@@ -63,91 +91,163 @@ contract ComponentService is
|
|
63
91
|
|
64
92
|
//-------- component ----------------------------------------------------//
|
65
93
|
|
66
|
-
function
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
94
|
+
function registerComponent(address component)
|
95
|
+
external
|
96
|
+
virtual
|
97
|
+
onlyComponent(component)
|
98
|
+
returns (NftId componentNftId)
|
99
|
+
{
|
100
|
+
// type specific registration
|
101
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
102
|
+
if (componentType == POOL()) {
|
103
|
+
return _registerPool(component);
|
73
104
|
}
|
74
|
-
|
75
|
-
|
76
|
-
revert ErrorComponentServiceWalletAddressZero();
|
105
|
+
if (componentType == DISTRIBUTION()) {
|
106
|
+
return _registerDistribution(component);
|
77
107
|
}
|
78
|
-
|
79
|
-
|
80
|
-
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
108
|
+
if (componentType == ORACLE()) {
|
109
|
+
return _registerOracle(component);
|
81
110
|
}
|
82
111
|
|
83
|
-
|
84
|
-
|
85
|
-
|
112
|
+
// fail
|
113
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
114
|
+
}
|
115
|
+
|
116
|
+
function approveTokenHandler(
|
117
|
+
IERC20Metadata token,
|
118
|
+
Amount amount
|
119
|
+
)
|
120
|
+
external
|
121
|
+
virtual
|
122
|
+
{
|
123
|
+
// checks
|
124
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
125
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
126
|
+
componentNftId).tokenHandler;
|
127
|
+
|
128
|
+
// effects
|
129
|
+
tokenHandler.approve(token, amount);
|
86
130
|
}
|
87
131
|
|
88
|
-
// TODO implement
|
89
|
-
function lock() external virtual {}
|
90
132
|
|
91
|
-
|
92
|
-
|
133
|
+
function setWallet(address newWallet)
|
134
|
+
external
|
135
|
+
virtual
|
136
|
+
{
|
137
|
+
// checks
|
138
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
139
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
140
|
+
componentNftId).tokenHandler;
|
141
|
+
|
142
|
+
// effects
|
143
|
+
tokenHandler.setWallet(newWallet);
|
144
|
+
}
|
93
145
|
|
146
|
+
/// @inheritdoc IComponentService
|
147
|
+
function setLockedFromInstance(address componentAddress, bool locked)
|
148
|
+
external
|
149
|
+
virtual
|
150
|
+
onlyInstance()
|
151
|
+
{
|
152
|
+
address instanceAddress = msg.sender;
|
153
|
+
// NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
154
|
+
IInstance instance = IInstance(instanceAddress);
|
155
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
156
|
+
}
|
157
|
+
|
158
|
+
/// @inheritdoc IComponentService
|
159
|
+
function setLockedFromComponent(address componentAddress, bool locked)
|
160
|
+
external
|
161
|
+
virtual
|
162
|
+
onlyComponent(msg.sender)
|
163
|
+
{
|
164
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
165
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
166
|
+
}
|
167
|
+
|
168
|
+
/// @inheritdoc IComponentService
|
94
169
|
function withdrawFees(Amount amount)
|
95
170
|
external
|
96
171
|
virtual
|
97
172
|
returns (Amount withdrawnAmount)
|
98
173
|
{
|
99
|
-
|
100
|
-
|
101
|
-
|
174
|
+
// checks
|
175
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
176
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
102
177
|
|
103
178
|
// determine withdrawn amount
|
179
|
+
Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
|
104
180
|
withdrawnAmount = amount;
|
105
|
-
|
106
|
-
|
107
|
-
|
181
|
+
|
182
|
+
// max amount -> withraw all available fees
|
183
|
+
if (amount == AmountLib.max()) {
|
184
|
+
withdrawnAmount = maxAvailableAmount;
|
185
|
+
}
|
186
|
+
|
187
|
+
// check modified withdrawn amount
|
188
|
+
if (withdrawnAmount.eqz()) {
|
108
189
|
revert ErrorComponentServiceWithdrawAmountIsZero();
|
109
|
-
} else {
|
110
|
-
|
111
|
-
if (withdrawnAmount.gt(withdrawLimit)) {
|
112
|
-
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
113
|
-
}
|
190
|
+
} else if (withdrawnAmount > maxAvailableAmount) {
|
191
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
|
114
192
|
}
|
115
193
|
|
194
|
+
// effects
|
116
195
|
// decrease fee counters by withdrawnAmount
|
117
|
-
|
196
|
+
_accountingService.decreaseComponentFees(
|
197
|
+
instance.getInstanceStore(),
|
198
|
+
componentNftId,
|
199
|
+
withdrawnAmount);
|
118
200
|
|
119
|
-
// transfer amount to component owner
|
120
201
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
121
|
-
|
122
|
-
|
202
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
|
203
|
+
emit LogComponentServiceComponentFeesWithdrawn(
|
204
|
+
componentNftId,
|
205
|
+
componentOwner,
|
206
|
+
address(tokenHandler.TOKEN()),
|
207
|
+
withdrawnAmount);
|
208
|
+
|
209
|
+
// interactions
|
210
|
+
// transfer amount to component owner
|
211
|
+
tokenHandler.pushFeeToken(
|
212
|
+
componentOwner,
|
213
|
+
withdrawnAmount);
|
123
214
|
}
|
124
215
|
|
125
216
|
|
126
217
|
//-------- product ------------------------------------------------------//
|
127
218
|
|
128
|
-
function registerProduct()
|
219
|
+
function registerProduct(address productAddress)
|
129
220
|
external
|
130
221
|
virtual
|
222
|
+
nonReentrant()
|
223
|
+
onlyComponent(productAddress)
|
224
|
+
returns (NftId productNftId)
|
131
225
|
{
|
132
|
-
address contractAddress = msg.sender;
|
133
|
-
|
134
226
|
// register/create component setup
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
227
|
+
InstanceAdmin instanceAdmin;
|
228
|
+
InstanceStore instanceStore;
|
229
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
230
|
+
productAddress,
|
231
|
+
PRODUCT());
|
232
|
+
|
233
|
+
// get product
|
234
|
+
IProductComponent product = IProductComponent(productAddress);
|
143
235
|
|
144
|
-
|
145
|
-
|
146
|
-
|
236
|
+
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
237
|
+
// force initialization of linked components with empty values to
|
238
|
+
// ensure no components are linked upon initialization of the product
|
239
|
+
initialProductInfo.poolNftId = NftIdLib.zero();
|
240
|
+
initialProductInfo.distributionNftId = NftIdLib.zero();
|
241
|
+
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
147
242
|
|
148
|
-
//
|
149
|
-
|
150
|
-
|
243
|
+
// create info
|
244
|
+
instanceStore.createProduct(
|
245
|
+
productNftId,
|
246
|
+
initialProductInfo);
|
247
|
+
|
248
|
+
instanceStore.createFee(
|
249
|
+
productNftId,
|
250
|
+
product.getInitialFeeInfo());
|
151
251
|
}
|
152
252
|
|
153
253
|
|
@@ -157,68 +257,62 @@ contract ComponentService is
|
|
157
257
|
)
|
158
258
|
external
|
159
259
|
virtual
|
260
|
+
nonReentrant()
|
160
261
|
{
|
161
|
-
(NftId productNftId
|
162
|
-
IComponents.
|
262
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
263
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
163
264
|
bool feesChanged = false;
|
164
265
|
|
165
266
|
// update product fee if required
|
166
|
-
if(!FeeLib.eq(
|
167
|
-
_logUpdateFee(productNftId, "ProductFee",
|
168
|
-
|
267
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
268
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
269
|
+
feeInfo.productFee = productFee;
|
169
270
|
feesChanged = true;
|
170
271
|
}
|
171
272
|
|
172
273
|
// update processing fee if required
|
173
|
-
if(!FeeLib.eq(
|
174
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
175
|
-
|
274
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
275
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
276
|
+
feeInfo.processingFee = processingFee;
|
176
277
|
feesChanged = true;
|
177
278
|
}
|
178
279
|
|
179
280
|
if(feesChanged) {
|
180
|
-
instance.getInstanceStore().
|
281
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
181
282
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
182
283
|
}
|
183
284
|
}
|
184
285
|
|
185
|
-
function increaseProductFees(
|
186
|
-
InstanceStore instanceStore,
|
187
|
-
NftId productNftId,
|
188
|
-
Amount feeAmount
|
189
|
-
)
|
190
|
-
external
|
191
|
-
virtual
|
192
|
-
// TODO re-enable once role granting is stable and fixed
|
193
|
-
// restricted()
|
194
|
-
{
|
195
|
-
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
196
|
-
}
|
197
|
-
|
198
|
-
|
199
|
-
function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
|
200
|
-
external
|
201
|
-
virtual
|
202
|
-
// TODO re-enable once role granting is stable and fixed
|
203
|
-
// restricted()
|
204
|
-
{
|
205
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
206
|
-
}
|
207
|
-
|
208
286
|
//-------- distribution -------------------------------------------------//
|
209
287
|
|
210
288
|
/// @dev registers the sending component as a distribution component
|
211
|
-
function
|
212
|
-
|
289
|
+
function _registerDistribution(address distributioAddress)
|
290
|
+
internal
|
213
291
|
virtual
|
292
|
+
nonReentrant()
|
293
|
+
returns (NftId distributionNftId)
|
214
294
|
{
|
215
|
-
address contractAddress = msg.sender;
|
216
|
-
|
217
295
|
// register/create component info
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
296
|
+
InstanceReader instanceReader;
|
297
|
+
InstanceAdmin instanceAdmin;
|
298
|
+
InstanceStore instanceStore;
|
299
|
+
NftId productNftId;
|
300
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
301
|
+
distributioAddress,
|
302
|
+
DISTRIBUTION());
|
303
|
+
|
304
|
+
// check product is still expecting a distribution registration
|
305
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
306
|
+
if (!productInfo.hasDistribution) {
|
307
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
308
|
+
}
|
309
|
+
if (productInfo.distributionNftId.gtz()) {
|
310
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
311
|
+
}
|
312
|
+
|
313
|
+
// set distribution in product info
|
314
|
+
productInfo.distributionNftId = distributionNftId;
|
315
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
222
316
|
}
|
223
317
|
|
224
318
|
|
@@ -229,132 +323,95 @@ contract ComponentService is
|
|
229
323
|
external
|
230
324
|
virtual
|
231
325
|
{
|
232
|
-
(NftId distributionNftId
|
233
|
-
(NftId productNftId, IComponents.
|
326
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
327
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
234
328
|
instance.getInstanceReader(), distributionNftId);
|
235
329
|
bool feesChanged = false;
|
236
330
|
|
237
331
|
// update distributino fee if required
|
238
|
-
if(!FeeLib.eq(
|
239
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
240
|
-
|
332
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
333
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
334
|
+
feeInfo.distributionFee = distributionFee;
|
241
335
|
feesChanged = true;
|
242
336
|
}
|
243
337
|
|
244
338
|
// update min distribution owner fee if required
|
245
|
-
if(!FeeLib.eq(
|
246
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
247
|
-
|
339
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
340
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
341
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
248
342
|
feesChanged = true;
|
249
343
|
}
|
250
344
|
|
251
345
|
if(feesChanged) {
|
252
|
-
instance.getInstanceStore().
|
346
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
253
347
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
254
348
|
}
|
255
349
|
}
|
256
350
|
|
257
|
-
function increaseDistributionBalance(
|
258
|
-
InstanceStore instanceStore,
|
259
|
-
NftId distributionNftId,
|
260
|
-
Amount amount,
|
261
|
-
Amount feeAmount
|
262
|
-
)
|
263
|
-
external
|
264
|
-
virtual
|
265
|
-
// TODO re-enable once role granting is stable and fixed
|
266
|
-
// restricted()
|
267
|
-
{
|
268
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
269
|
-
}
|
270
|
-
|
271
|
-
|
272
|
-
function decreaseDistributionBalance(
|
273
|
-
InstanceStore instanceStore,
|
274
|
-
NftId distributionNftId,
|
275
|
-
Amount amount,
|
276
|
-
Amount feeAmount
|
277
|
-
)
|
278
|
-
external
|
279
|
-
virtual
|
280
|
-
// TODO re-enable once role granting is stable and fixed
|
281
|
-
// restricted()
|
282
|
-
{
|
283
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
284
|
-
}
|
285
|
-
|
286
|
-
//-------- distributor -------------------------------------------------------//
|
287
|
-
|
288
|
-
function increaseDistributorBalance(
|
289
|
-
InstanceStore instanceStore,
|
290
|
-
NftId distributorNftId,
|
291
|
-
Amount amount,
|
292
|
-
Amount feeAmount
|
293
|
-
)
|
294
|
-
external
|
295
|
-
virtual
|
296
|
-
// TODO re-enable once role granting is stable and fixed
|
297
|
-
// restricted()
|
298
|
-
{
|
299
|
-
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
300
|
-
}
|
301
|
-
|
302
|
-
function decreaseDistributorBalance(
|
303
|
-
InstanceStore instanceStore,
|
304
|
-
NftId distributorNftId,
|
305
|
-
Amount amount,
|
306
|
-
Amount feeAmount
|
307
|
-
)
|
308
|
-
external
|
309
|
-
virtual
|
310
|
-
// TODO re-enable once role granting is stable and fixed
|
311
|
-
// restricted()
|
312
|
-
{
|
313
|
-
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
314
|
-
}
|
315
|
-
|
316
351
|
//-------- oracle -------------------------------------------------------//
|
317
352
|
|
318
|
-
function
|
319
|
-
|
353
|
+
function _registerOracle(address oracleAddress)
|
354
|
+
internal
|
320
355
|
virtual
|
356
|
+
returns (NftId oracleNftId)
|
321
357
|
{
|
322
|
-
address contractAddress = msg.sender;
|
323
|
-
|
324
358
|
// register/create component setup
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
359
|
+
InstanceReader instanceReader;
|
360
|
+
InstanceAdmin instanceAdmin;
|
361
|
+
InstanceStore instanceStore;
|
362
|
+
NftId productNftId;
|
363
|
+
|
364
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
365
|
+
oracleAddress,
|
366
|
+
ORACLE());
|
367
|
+
|
368
|
+
// check product is still expecting an oracle registration
|
369
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
370
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
371
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
372
|
+
}
|
373
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
374
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
375
|
+
}
|
376
|
+
|
377
|
+
// update/add oracle to product info
|
378
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
379
|
+
productInfo.numberOfOracles++;
|
380
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
333
381
|
}
|
334
382
|
|
335
383
|
//-------- pool ---------------------------------------------------------//
|
336
384
|
|
337
|
-
function
|
338
|
-
|
385
|
+
function _registerPool(address poolAddress)
|
386
|
+
internal
|
339
387
|
virtual
|
388
|
+
returns (NftId poolNftId)
|
340
389
|
{
|
341
|
-
address contractAddress = msg.sender;
|
342
|
-
|
343
390
|
// register/create component setup
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
391
|
+
InstanceReader instanceReader;
|
392
|
+
InstanceAdmin instanceAdmin;
|
393
|
+
InstanceStore instanceStore;
|
394
|
+
NftId productNftId;
|
395
|
+
|
396
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
397
|
+
poolAddress,
|
398
|
+
POOL());
|
399
|
+
|
400
|
+
// check product is still expecting a pool registration
|
401
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
402
|
+
if (productInfo.poolNftId.gtz()) {
|
403
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
404
|
+
}
|
352
405
|
|
353
406
|
// create info
|
407
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
354
408
|
instanceStore.createPool(
|
355
|
-
|
356
|
-
|
357
|
-
|
409
|
+
poolNftId,
|
410
|
+
pool.getInitialPoolInfo());
|
411
|
+
|
412
|
+
// update pool in product info
|
413
|
+
productInfo.poolNftId = poolNftId;
|
414
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
358
415
|
}
|
359
416
|
|
360
417
|
|
@@ -366,190 +423,105 @@ contract ComponentService is
|
|
366
423
|
external
|
367
424
|
virtual
|
368
425
|
{
|
369
|
-
(NftId poolNftId
|
370
|
-
|
426
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
427
|
+
|
428
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
371
429
|
instance.getInstanceReader(), poolNftId);
|
372
430
|
bool feesChanged = false;
|
373
431
|
|
374
432
|
// update pool fee if required
|
375
|
-
if(!FeeLib.eq(
|
376
|
-
_logUpdateFee(productNftId, "PoolFee",
|
377
|
-
|
433
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
434
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
435
|
+
feeInfo.poolFee = poolFee;
|
378
436
|
feesChanged = true;
|
379
437
|
}
|
380
438
|
|
381
439
|
// update staking fee if required
|
382
|
-
if(!FeeLib.eq(
|
383
|
-
_logUpdateFee(productNftId, "StakingFee",
|
384
|
-
|
440
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
441
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
442
|
+
feeInfo.stakingFee = stakingFee;
|
385
443
|
feesChanged = true;
|
386
444
|
}
|
387
445
|
|
388
446
|
// update performance fee if required
|
389
|
-
if(!FeeLib.eq(
|
390
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
391
|
-
|
447
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
448
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
449
|
+
feeInfo.performanceFee = performanceFee;
|
392
450
|
feesChanged = true;
|
393
451
|
}
|
394
452
|
|
395
453
|
if(feesChanged) {
|
396
|
-
instance.getInstanceStore().
|
454
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
397
455
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
398
456
|
}
|
399
457
|
}
|
400
458
|
|
401
|
-
|
402
|
-
InstanceStore instanceStore,
|
403
|
-
NftId poolNftId,
|
404
|
-
Amount amount,
|
405
|
-
Amount feeAmount
|
406
|
-
)
|
407
|
-
public
|
408
|
-
virtual
|
409
|
-
// TODO re-enable once role granting is stable and fixed
|
410
|
-
// restricted()
|
411
|
-
{
|
412
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
413
|
-
}
|
414
|
-
|
415
|
-
function decreasePoolBalance(
|
416
|
-
InstanceStore instanceStore,
|
417
|
-
NftId poolNftId,
|
418
|
-
Amount amount,
|
419
|
-
Amount feeAmount
|
420
|
-
)
|
421
|
-
public
|
422
|
-
virtual
|
423
|
-
// TODO re-enable once role granting is stable and fixed
|
424
|
-
// restricted()
|
425
|
-
{
|
426
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
427
|
-
}
|
428
|
-
|
429
|
-
//-------- bundle -------------------------------------------------------//
|
430
|
-
|
431
|
-
function increaseBundleBalance(
|
432
|
-
InstanceStore instanceStore,
|
433
|
-
NftId bundleNftId,
|
434
|
-
Amount amount,
|
435
|
-
Amount feeAmount
|
436
|
-
)
|
437
|
-
external
|
438
|
-
virtual
|
439
|
-
// TODO re-enable once role granting is stable and fixed
|
440
|
-
// restricted()
|
441
|
-
{
|
442
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
443
|
-
}
|
444
|
-
|
445
|
-
function decreaseBundleBalance(
|
446
|
-
InstanceStore instanceStore,
|
447
|
-
NftId bundleNftId,
|
448
|
-
Amount amount,
|
449
|
-
Amount feeAmount
|
450
|
-
)
|
451
|
-
external
|
452
|
-
virtual
|
453
|
-
// TODO re-enable once role granting is stable and fixed
|
454
|
-
// restricted()
|
455
|
-
{
|
456
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
457
|
-
}
|
458
|
-
|
459
|
-
|
460
|
-
//-------- internal functions ------------------------------------------//
|
461
|
-
|
462
|
-
function _changeTargetBalance(
|
463
|
-
bool increase,
|
464
|
-
InstanceStore instanceStore,
|
465
|
-
NftId targetNftId,
|
466
|
-
Amount amount,
|
467
|
-
Amount feeAmount
|
468
|
-
)
|
469
|
-
internal
|
470
|
-
virtual
|
471
|
-
{
|
472
|
-
Amount totalAmount = amount + feeAmount;
|
473
|
-
|
474
|
-
if(increase) {
|
475
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
476
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
477
|
-
} else {
|
478
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
479
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
480
|
-
}
|
481
|
-
}
|
482
|
-
|
483
|
-
/// @dev registers the component represented by the provided address
|
459
|
+
/// @dev Registers the component represented by the provided address.
|
484
460
|
function _register(
|
485
461
|
address componentAddress, // address of component to register
|
486
|
-
ObjectType requiredType
|
487
|
-
RoleId requiredRole // role required for comonent owner for registration
|
462
|
+
ObjectType requiredType // required type for component for registration
|
488
463
|
)
|
489
464
|
internal
|
490
465
|
virtual
|
491
466
|
returns (
|
492
467
|
InstanceReader instanceReader,
|
468
|
+
InstanceAdmin instanceAdmin,
|
493
469
|
InstanceStore instanceStore,
|
470
|
+
NftId parentNftId,
|
494
471
|
NftId componentNftId
|
495
472
|
)
|
496
473
|
{
|
474
|
+
NftId instanceNftId;
|
475
|
+
IInstance instance;
|
476
|
+
IInstanceLinkedComponent component;
|
477
|
+
address initialOwner;
|
478
|
+
|
497
479
|
(
|
498
|
-
|
499
|
-
|
500
|
-
|
480
|
+
instanceNftId,
|
481
|
+
instance,
|
482
|
+
parentNftId,
|
483
|
+
component,
|
484
|
+
initialOwner
|
501
485
|
) = _getAndVerifyRegisterableComponent(
|
486
|
+
getRegistry(),
|
502
487
|
componentAddress,
|
503
|
-
requiredType
|
504
|
-
requiredRole);
|
488
|
+
requiredType);
|
505
489
|
|
506
|
-
//
|
507
|
-
componentNftId = _registryService.registerComponent(
|
508
|
-
component,
|
509
|
-
requiredType,
|
510
|
-
owner).nftId;
|
511
|
-
|
512
|
-
component.linkToRegisteredNftId();
|
513
|
-
|
514
|
-
// save amended component info with instance
|
490
|
+
// get instance supporting contracts (as function return values)
|
515
491
|
instanceReader = instance.getInstanceReader();
|
492
|
+
instanceAdmin = instance.getInstanceAdmin();
|
516
493
|
instanceStore = instance.getInstanceStore();
|
517
494
|
|
495
|
+
// register with registry
|
496
|
+
if (requiredType == PRODUCT()) {
|
497
|
+
componentNftId = _registryService.registerProduct(
|
498
|
+
component, initialOwner).nftId;
|
499
|
+
} else {
|
500
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
501
|
+
component, requiredType, initialOwner).nftId;
|
502
|
+
}
|
503
|
+
|
504
|
+
// deploy and wire token handler
|
518
505
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
506
|
+
IERC20Metadata token = componentInfo.token;
|
519
507
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
520
|
-
address(
|
521
|
-
address(
|
522
|
-
|
508
|
+
address(getRegistry()),
|
509
|
+
address(component), // initially, component is its own wallet
|
510
|
+
address(token),
|
511
|
+
address(instanceAdmin.authority()));
|
512
|
+
|
513
|
+
// register component with instance
|
523
514
|
instanceStore.createComponent(
|
524
|
-
|
515
|
+
componentNftId,
|
525
516
|
componentInfo);
|
526
517
|
|
527
|
-
//
|
528
|
-
|
529
|
-
instance.getNftId(),
|
530
|
-
component);
|
531
|
-
|
532
|
-
// TODO add logging
|
533
|
-
}
|
518
|
+
// link component contract to nft id
|
519
|
+
component.linkToRegisteredNftId();
|
534
520
|
|
521
|
+
// authorize
|
522
|
+
instanceAdmin.initializeComponentAuthorization(component);
|
535
523
|
|
536
|
-
|
537
|
-
function _linkToProduct(
|
538
|
-
InstanceReader instanceReader,
|
539
|
-
InstanceStore instanceStore,
|
540
|
-
NftId componentNftId,
|
541
|
-
NftId productNftId
|
542
|
-
)
|
543
|
-
internal
|
544
|
-
{
|
545
|
-
// only link components that are registered
|
546
|
-
if(componentNftId.eqz()) {
|
547
|
-
return;
|
548
|
-
}
|
549
|
-
|
550
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
551
|
-
componentInfo.productNftId = productNftId;
|
552
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
524
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
553
525
|
}
|
554
526
|
|
555
527
|
|
@@ -568,13 +540,7 @@ contract ComponentService is
|
|
568
540
|
}
|
569
541
|
|
570
542
|
|
571
|
-
function
|
572
|
-
selectors = new bytes4[](1);
|
573
|
-
selectors[0] = selector;
|
574
|
-
}
|
575
|
-
|
576
|
-
|
577
|
-
function _getLinkedProductInfo(
|
543
|
+
function _getLinkedFeeInfo(
|
578
544
|
InstanceReader instanceReader,
|
579
545
|
NftId componentNftId
|
580
546
|
)
|
@@ -582,40 +548,48 @@ contract ComponentService is
|
|
582
548
|
view
|
583
549
|
returns(
|
584
550
|
NftId productNftId,
|
585
|
-
IComponents.
|
551
|
+
IComponents.FeeInfo memory info
|
586
552
|
)
|
587
553
|
{
|
588
|
-
productNftId =
|
589
|
-
info = instanceReader.
|
554
|
+
productNftId = getRegistry().getParentNftId(componentNftId);
|
555
|
+
info = instanceReader.getFeeInfo(productNftId);
|
590
556
|
}
|
591
557
|
|
592
558
|
|
593
|
-
/// @dev
|
594
|
-
///
|
595
|
-
/// - the
|
559
|
+
/// @dev Based on the provided component address required type the component
|
560
|
+
/// and related instance contract this function reverts iff:
|
561
|
+
/// - the sender is not registered
|
596
562
|
/// - the component contract does not support IInstanceLinkedComponent
|
597
563
|
/// - the component type does not match with the required type
|
598
|
-
/// - the
|
564
|
+
/// - the component has already been registered
|
599
565
|
function _getAndVerifyRegisterableComponent(
|
566
|
+
IRegistry registry,
|
600
567
|
address componentAddress,
|
601
|
-
ObjectType requiredType
|
602
|
-
RoleId requiredRole
|
568
|
+
ObjectType requiredType
|
603
569
|
)
|
604
570
|
internal
|
605
571
|
view
|
606
572
|
returns (
|
573
|
+
NftId instanceNftId,
|
607
574
|
IInstance instance,
|
575
|
+
NftId parentNftId,
|
608
576
|
IInstanceLinkedComponent component,
|
609
|
-
address
|
577
|
+
address initialOwner
|
610
578
|
)
|
611
579
|
{
|
612
|
-
// check
|
613
|
-
|
614
|
-
if(
|
615
|
-
revert
|
580
|
+
// check sender (instance or product) is registered
|
581
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
582
|
+
if (senderInfo.nftId.eqz()) {
|
583
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
616
584
|
}
|
617
585
|
|
586
|
+
// the sender is the parent of the component to be registered
|
587
|
+
// an instance caller wanting to register a product - or -
|
588
|
+
// a product caller wantint go register a distribution, oracle or pool
|
589
|
+
parentNftId = senderInfo.nftId;
|
590
|
+
|
618
591
|
// check component is of required type
|
592
|
+
component = IInstanceLinkedComponent(componentAddress);
|
619
593
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
620
594
|
if(info.objectType != requiredType) {
|
621
595
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
@@ -626,16 +600,93 @@ contract ComponentService is
|
|
626
600
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
627
601
|
}
|
628
602
|
|
629
|
-
//
|
630
|
-
|
631
|
-
|
603
|
+
// component release matches servie release
|
604
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
605
|
+
if (component.getRelease() != getRelease()) {
|
606
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), getRelease());
|
607
|
+
// component release matches parent release
|
608
|
+
} else if (component.getRelease() != IRegisterable(parentAddress).getRelease()){
|
609
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
610
|
+
}
|
632
611
|
|
633
|
-
|
634
|
-
|
612
|
+
// check component belongs to same product cluster
|
613
|
+
// parent of product must be instance, parent of other componet types must be product
|
614
|
+
if (info.parentNftId != senderInfo.nftId) {
|
615
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
635
616
|
}
|
617
|
+
|
618
|
+
// verify parent is registered instance
|
619
|
+
if (requiredType == PRODUCT()) {
|
620
|
+
if (senderInfo.objectType != INSTANCE()) {
|
621
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
622
|
+
}
|
623
|
+
|
624
|
+
instanceNftId = senderInfo.nftId;
|
625
|
+
// verify parent is registered product
|
626
|
+
} else {
|
627
|
+
if (senderInfo.objectType != PRODUCT()) {
|
628
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
629
|
+
}
|
630
|
+
|
631
|
+
instanceNftId = senderInfo.parentNftId;
|
632
|
+
}
|
633
|
+
|
634
|
+
// get initial owner and instance
|
635
|
+
initialOwner = info.initialOwner;
|
636
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
637
|
+
}
|
638
|
+
|
639
|
+
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
640
|
+
instanceAdmin.setTargetLocked(componentAddress, locked);
|
641
|
+
}
|
642
|
+
|
643
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
644
|
+
internal
|
645
|
+
view
|
646
|
+
returns (
|
647
|
+
NftId componentNftId,
|
648
|
+
IInstance instance
|
649
|
+
)
|
650
|
+
{
|
651
|
+
return _getAndVerifyComponent(expectedType, true); // only active
|
652
|
+
}
|
653
|
+
|
654
|
+
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
655
|
+
internal
|
656
|
+
view
|
657
|
+
returns (
|
658
|
+
NftId componentNftId,
|
659
|
+
IInstance instance
|
660
|
+
)
|
661
|
+
{
|
662
|
+
IRegistry.ObjectInfo memory info;
|
663
|
+
address instanceAddress;
|
664
|
+
|
665
|
+
if (expectedType != COMPONENT()) {
|
666
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
667
|
+
getRegistry(),
|
668
|
+
msg.sender, // caller
|
669
|
+
expectedType,
|
670
|
+
isActive);
|
671
|
+
} else {
|
672
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
673
|
+
getRegistry(),
|
674
|
+
msg.sender,
|
675
|
+
isActive);
|
676
|
+
}
|
677
|
+
|
678
|
+
// get component nft id and instance
|
679
|
+
componentNftId = info.nftId;
|
680
|
+
instance = IInstance(instanceAddress);
|
636
681
|
}
|
637
682
|
|
638
683
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
639
684
|
return COMPONENT();
|
640
685
|
}
|
686
|
+
|
687
|
+
function _checkSupportsInterface(address component) internal view {
|
688
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
689
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
690
|
+
}
|
691
|
+
}
|
641
692
|
}
|