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