@etherisc/gif-next 0.0.2-e79d227-681 → 0.0.2-e7a5428-226
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 +57 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +640 -269
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +409 -33
- 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 +525 -213
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +105 -185
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +58 -127
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +533 -218
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -82
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +37 -106
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +379 -79
- 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 +183 -128
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +355 -52
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +324 -250
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
- 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 +191 -182
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +94 -100
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +196 -155
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +600 -296
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +88 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +482 -50
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +373 -13
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +493 -85
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1017 -334
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +380 -52
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +914 -554
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +377 -80
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +83 -57
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +690 -566
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +141 -85
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +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 +77 -81
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
- 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 +41 -45
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +61 -65
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +120 -68
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -55
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -114
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +355 -52
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +304 -226
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +120 -76
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +200 -89
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +59 -63
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +333 -169
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +72 -76
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +574 -360
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +146 -74
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +293 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +106 -46
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +193 -182
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +292 -195
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +127 -99
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +235 -4
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +160 -68
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +168 -157
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +278 -187
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +129 -85
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +135 -126
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +103 -75
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +187 -176
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +326 -91
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +103 -47
- 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 +54 -19
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/{authorization/AccessAdmin.sol/IAccessManagedChecker.json → registry/IRelease.sol/IRelease.json} +6 -6
- 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 +92 -57
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +727 -479
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +75 -39
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +79 -43
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -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 +386 -64
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +60 -50
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -531
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +111 -95
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +178 -34
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +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 +41 -31
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +155 -382
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +41 -45
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +6 -6
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -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 +56 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +60 -64
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +6 -6
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -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 +51 -11
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1026 -101
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1218 -214
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/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 +139 -61
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +174 -217
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +253 -174
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +87 -55
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +957 -603
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +101 -51
- 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 +11 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +30 -6
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/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/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
- 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 +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +65 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +422 -258
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +142 -262
- package/contracts/authorization/IAccess.sol +25 -7
- package/contracts/authorization/IAccessAdmin.sol +87 -80
- package/contracts/authorization/IAuthorization.sol +9 -43
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +248 -34
- package/contracts/distribution/BasicDistribution.sol +16 -14
- package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
- package/contracts/distribution/Distribution.sol +38 -75
- package/contracts/distribution/DistributionService.sol +181 -87
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +34 -19
- package/contracts/examples/fire/FirePool.sol +6 -6
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +15 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +34 -11
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +7 -13
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +119 -27
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +4 -4
- package/contracts/instance/IInstance.sol +92 -19
- package/contracts/instance/IInstanceService.sol +52 -9
- package/contracts/instance/Instance.sol +163 -57
- package/contracts/instance/InstanceAdmin.sol +271 -166
- package/contracts/instance/InstanceAuthorizationV3.sol +89 -40
- package/contracts/instance/InstanceReader.sol +422 -369
- package/contracts/instance/InstanceService.sol +252 -176
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +21 -14
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +6 -8
- package/contracts/instance/base/ObjectSet.sol +7 -8
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +19 -7
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +4 -0
- package/contracts/oracle/BasicOracle.sol +2 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +3 -5
- package/contracts/oracle/OracleService.sol +24 -23
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +3 -16
- package/contracts/pool/BasicPoolAuthorization.sol +29 -16
- package/contracts/pool/BundleService.sol +67 -104
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +27 -33
- package/contracts/pool/IPoolService.sol +57 -40
- package/contracts/pool/Pool.sol +13 -25
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +203 -201
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +86 -18
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +3 -3
- package/contracts/product/BasicProductAuthorization.sol +32 -11
- package/contracts/product/ClaimService.sol +187 -171
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +24 -2
- package/contracts/product/IClaimService.sol +18 -5
- package/contracts/product/IPolicyService.sol +20 -8
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +110 -198
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +52 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +93 -27
- package/contracts/product/RiskService.sol +119 -36
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +23 -24
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/Registry.sol +22 -11
- package/contracts/registry/RegistryAdmin.sol +100 -363
- package/contracts/registry/RegistryAuthorization.sol +309 -0
- package/contracts/registry/RegistryService.sol +4 -4
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +157 -117
- package/contracts/registry/ServiceAuthorizationV3.sol +194 -27
- package/contracts/registry/TokenRegistry.sol +61 -59
- package/contracts/shared/Component.sol +34 -37
- package/contracts/shared/ComponentService.sol +314 -433
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ContractLib.sol +164 -76
- package/contracts/shared/IComponent.sol +1 -10
- package/contracts/shared/IComponentService.sol +22 -41
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IKeyValueStore.sol +1 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +15 -5
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +7 -18
- package/contracts/shared/KeyValueStore.sol +3 -3
- package/contracts/shared/NftOwnable.sol +8 -6
- package/contracts/shared/PolicyHolder.sol +4 -3
- package/contracts/shared/Registerable.sol +42 -19
- package/contracts/shared/RegistryLinked.sol +1 -1
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +45 -92
- package/contracts/staking/IStaking.sol +155 -64
- package/contracts/staking/IStakingService.sol +45 -75
- package/contracts/staking/Staking.sol +444 -203
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +1 -2
- package/contracts/staking/StakingReader.sol +41 -80
- package/contracts/staking/StakingService.sol +62 -181
- package/contracts/staking/StakingServiceManager.sol +6 -4
- package/contracts/staking/StakingStore.sol +697 -329
- package/contracts/staking/TargetManagerLib.sol +1 -1
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +15 -15
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +67 -38
- package/contracts/type/RiskId.sol +9 -3
- package/contracts/type/RoleId.sol +63 -45
- package/contracts/type/Seconds.sol +14 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -7
- package/contracts/type/UFixed.sol +35 -127
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/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/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- 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/ComponentVerifyingService.sol +0 -128
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
8
|
import {IComponentService} from "./IComponentService.sol";
|
9
9
|
import {IInstance} from "../instance/IInstance.sol";
|
@@ -11,19 +11,21 @@ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
|
11
11
|
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
12
12
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
13
13
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
14
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
15
14
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
16
15
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
17
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
18
16
|
import {IRegistry} from "../registry/IRegistry.sol";
|
19
17
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
18
|
+
import {IStaking} from "../staking/IStaking.sol";
|
19
|
+
import {IStakingService} from "../staking/IStakingService.sol";
|
20
20
|
|
21
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
21
22
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
23
|
+
import {ChainIdLib} from "../type/ChainId.sol";
|
22
24
|
import {ContractLib} from "../shared/ContractLib.sol";
|
23
25
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
24
26
|
import {KEEP_STATE} from "../type/StateId.sol";
|
25
|
-
import {NftId} from "../type/NftId.sol";
|
26
|
-
import {ObjectType,
|
27
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
28
|
+
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
27
29
|
import {Service} from "../shared/Service.sol";
|
28
30
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
29
31
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
@@ -36,16 +38,9 @@ contract ComponentService is
|
|
36
38
|
bool private constant INCREASE = true;
|
37
39
|
bool private constant DECREASE = false;
|
38
40
|
|
41
|
+
IAccountingService private _accountingService;
|
39
42
|
IRegistryService private _registryService;
|
40
|
-
|
41
|
-
|
42
|
-
modifier onlyComponent(address component) {
|
43
|
-
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
44
|
-
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
45
|
-
}
|
46
|
-
_;
|
47
|
-
}
|
48
|
-
|
43
|
+
IStaking private _staking;
|
49
44
|
|
50
45
|
function _initialize(
|
51
46
|
address owner,
|
@@ -56,231 +51,285 @@ contract ComponentService is
|
|
56
51
|
initializer()
|
57
52
|
{
|
58
53
|
(
|
59
|
-
address
|
60
|
-
address
|
54
|
+
address authority,
|
55
|
+
address registry
|
61
56
|
) = abi.decode(data, (address, address));
|
62
57
|
|
63
|
-
|
58
|
+
__Service_init(authority, registry, owner);
|
64
59
|
|
60
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
65
61
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
66
|
-
|
62
|
+
_staking = IStakingService(_getServiceAddress(STAKING())).getStaking();
|
67
63
|
|
68
64
|
_registerInterface(type(IComponentService).interfaceId);
|
69
65
|
}
|
70
66
|
|
71
67
|
//-------- component ----------------------------------------------------//
|
72
68
|
|
73
|
-
|
69
|
+
/// @inheritdoc IComponentService
|
70
|
+
function registerComponent(address componentAddress)
|
74
71
|
external
|
75
72
|
virtual
|
76
|
-
|
73
|
+
restricted()
|
77
74
|
returns (NftId componentNftId)
|
78
75
|
{
|
79
|
-
//
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
if (componentType == DISTRIBUTION()) {
|
85
|
-
return _registerDistribution(component);
|
76
|
+
// checks
|
77
|
+
// check sender is registered product
|
78
|
+
IRegistry registry = getRegistry();
|
79
|
+
if (!registry.isObjectType(msg.sender, PRODUCT())) {
|
80
|
+
revert ErrorComponentServiceCallerNotProduct(msg.sender);
|
86
81
|
}
|
87
|
-
|
88
|
-
|
82
|
+
|
83
|
+
// check provided address is product contract
|
84
|
+
if (!_isInstanceLinkedComponent(componentAddress)) {
|
85
|
+
revert ErrorComponentServiceNotComponent(componentAddress);
|
89
86
|
}
|
90
87
|
|
91
|
-
|
92
|
-
|
88
|
+
NftId productNftId = registry.getNftIdForAddress(msg.sender);
|
89
|
+
IInstance instance = IInstance(
|
90
|
+
registry.getObjectAddress(
|
91
|
+
registry.getParentNftId(productNftId)));
|
92
|
+
|
93
|
+
componentNftId = _verifyAndRegister(
|
94
|
+
instance,
|
95
|
+
componentAddress,
|
96
|
+
productNftId, // product is parent of component to be registered
|
97
|
+
address(0)); // token will be inhereited from product
|
93
98
|
}
|
94
99
|
|
100
|
+
|
101
|
+
/// @inheritdoc IComponentService
|
95
102
|
function approveTokenHandler(
|
96
103
|
IERC20Metadata token,
|
97
104
|
Amount amount
|
98
105
|
)
|
99
106
|
external
|
100
107
|
virtual
|
108
|
+
restricted()
|
101
109
|
{
|
102
110
|
// checks
|
103
|
-
(NftId componentNftId, IInstance instance) =
|
104
|
-
TokenHandler tokenHandler = instance.getInstanceReader().
|
105
|
-
componentNftId)
|
111
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
112
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
113
|
+
componentNftId);
|
106
114
|
|
107
115
|
// effects
|
108
116
|
tokenHandler.approve(token, amount);
|
109
117
|
}
|
110
118
|
|
111
119
|
|
112
|
-
|
113
|
-
|
114
|
-
Amount amount
|
115
|
-
)
|
120
|
+
/// @inheritdoc IComponentService
|
121
|
+
function setWallet(address newWallet)
|
116
122
|
external
|
117
123
|
virtual
|
124
|
+
restricted()
|
118
125
|
{
|
119
126
|
// checks
|
120
|
-
|
121
|
-
|
122
|
-
|
127
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
128
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
129
|
+
componentNftId);
|
123
130
|
|
124
131
|
// effects
|
125
|
-
|
126
|
-
tokenHandler.approve(token, amount);
|
132
|
+
tokenHandler.setWallet(newWallet);
|
127
133
|
}
|
128
134
|
|
129
|
-
|
130
|
-
function
|
131
|
-
external
|
135
|
+
/// @inheritdoc IComponentService
|
136
|
+
function setLocked(bool locked)
|
137
|
+
external
|
132
138
|
virtual
|
139
|
+
restricted()
|
133
140
|
{
|
134
|
-
|
135
|
-
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
136
|
-
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
137
|
-
componentNftId).tokenHandler;
|
141
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
138
142
|
|
139
|
-
|
140
|
-
|
143
|
+
address component = msg.sender;
|
144
|
+
instance.getInstanceAdmin().setComponentLocked(
|
145
|
+
component,
|
146
|
+
locked);
|
147
|
+
emit LogComponentServiceComponentLocked(component, locked);
|
141
148
|
}
|
142
149
|
|
143
|
-
// TODO implement
|
144
|
-
function lock() external virtual {}
|
145
|
-
|
146
|
-
// TODO implement
|
147
|
-
function unlock() external virtual {}
|
148
150
|
|
151
|
+
/// @inheritdoc IComponentService
|
149
152
|
function withdrawFees(Amount amount)
|
150
153
|
external
|
151
154
|
virtual
|
155
|
+
restricted()
|
152
156
|
returns (Amount withdrawnAmount)
|
153
157
|
{
|
154
|
-
|
155
|
-
|
156
|
-
|
158
|
+
// checks
|
159
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
160
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
157
161
|
|
158
162
|
// determine withdrawn amount
|
163
|
+
Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
|
159
164
|
withdrawnAmount = amount;
|
160
|
-
|
161
|
-
|
162
|
-
|
165
|
+
|
166
|
+
// max amount -> withraw all available fees
|
167
|
+
if (amount == AmountLib.max()) {
|
168
|
+
withdrawnAmount = maxAvailableAmount;
|
169
|
+
}
|
170
|
+
|
171
|
+
// check modified withdrawn amount
|
172
|
+
if (withdrawnAmount.eqz()) {
|
163
173
|
revert ErrorComponentServiceWithdrawAmountIsZero();
|
164
|
-
} else {
|
165
|
-
|
166
|
-
if (withdrawnAmount.gt(withdrawLimit)) {
|
167
|
-
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
168
|
-
}
|
174
|
+
} else if (withdrawnAmount > maxAvailableAmount) {
|
175
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
|
169
176
|
}
|
170
177
|
|
178
|
+
// effects
|
171
179
|
// decrease fee counters by withdrawnAmount
|
172
|
-
|
180
|
+
_accountingService.decreaseComponentFees(
|
181
|
+
instance.getInstanceStore(),
|
182
|
+
componentNftId,
|
183
|
+
withdrawnAmount);
|
173
184
|
|
174
185
|
// transfer amount to component owner
|
175
186
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
176
|
-
|
177
|
-
|
187
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
|
188
|
+
emit LogComponentServiceComponentFeesWithdrawn(
|
189
|
+
componentNftId,
|
190
|
+
componentOwner,
|
191
|
+
address(tokenHandler.TOKEN()),
|
192
|
+
withdrawnAmount);
|
193
|
+
|
194
|
+
// interactions
|
195
|
+
// transfer amount to component owner
|
196
|
+
tokenHandler.pushFeeToken(
|
197
|
+
componentOwner,
|
198
|
+
withdrawnAmount);
|
178
199
|
}
|
179
200
|
|
180
201
|
|
181
202
|
//-------- product ------------------------------------------------------//
|
182
203
|
|
183
|
-
|
204
|
+
/// @inheritdoc IComponentService
|
205
|
+
function registerProduct(address productAddress, address token)
|
184
206
|
external
|
185
207
|
virtual
|
186
|
-
|
208
|
+
restricted()
|
209
|
+
nonReentrant()
|
187
210
|
returns (NftId productNftId)
|
188
211
|
{
|
189
|
-
//
|
190
|
-
|
191
|
-
|
192
|
-
(,
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
// get product
|
197
|
-
IProductComponent product = IProductComponent(productAddress);
|
212
|
+
// checks
|
213
|
+
// check sender is registered instance
|
214
|
+
IRegistry registry = getRegistry();
|
215
|
+
if (!registry.isObjectType(msg.sender, INSTANCE())) {
|
216
|
+
revert ErrorComponentServiceCallerNotInstance(msg.sender);
|
217
|
+
}
|
198
218
|
|
199
|
-
//
|
200
|
-
|
201
|
-
|
202
|
-
|
219
|
+
// check provided address is product contract
|
220
|
+
if (!_isProduct(productAddress)) {
|
221
|
+
revert ErrorComponentServiceNotProduct(productAddress);
|
222
|
+
}
|
203
223
|
|
204
|
-
|
205
|
-
|
224
|
+
IInstance instance = IInstance(msg.sender);
|
225
|
+
NftId instanceNftId = registry.getNftIdForAddress(msg.sender);
|
226
|
+
productNftId = _verifyAndRegister(
|
227
|
+
instance,
|
228
|
+
productAddress,
|
229
|
+
instanceNftId, // instance is parent of product to be registered
|
230
|
+
token);
|
231
|
+
|
232
|
+
// add product specific token for product to staking
|
233
|
+
_staking.addTargetToken(
|
234
|
+
instanceNftId,
|
235
|
+
token);
|
206
236
|
}
|
207
237
|
|
208
238
|
|
239
|
+
function _isProduct(address target) internal view virtual returns (bool) {
|
240
|
+
if (!_isInstanceLinkedComponent(target)) {
|
241
|
+
return false;
|
242
|
+
}
|
243
|
+
|
244
|
+
return IInstanceLinkedComponent(target).getInitialInfo().objectType == PRODUCT();
|
245
|
+
}
|
246
|
+
|
247
|
+
|
248
|
+
function _isInstanceLinkedComponent(address target) internal view virtual returns (bool) {
|
249
|
+
if (!ContractLib.isContract(target)) {
|
250
|
+
return false;
|
251
|
+
}
|
252
|
+
|
253
|
+
return ContractLib.supportsInterface(target, type(IInstanceLinkedComponent).interfaceId);
|
254
|
+
}
|
255
|
+
|
256
|
+
|
257
|
+
/// @inheritdoc IComponentService
|
209
258
|
function setProductFees(
|
210
259
|
Fee memory productFee, // product fee on net premium
|
211
260
|
Fee memory processingFee // product fee on payout amounts
|
212
261
|
)
|
213
262
|
external
|
214
263
|
virtual
|
264
|
+
restricted()
|
265
|
+
nonReentrant()
|
215
266
|
{
|
216
|
-
(NftId productNftId, IInstance instance) =
|
217
|
-
IComponents.
|
267
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
|
268
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
218
269
|
bool feesChanged = false;
|
219
270
|
|
220
271
|
// update product fee if required
|
221
|
-
if(!FeeLib.eq(
|
222
|
-
_logUpdateFee(productNftId, "ProductFee",
|
223
|
-
|
272
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
273
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
274
|
+
feeInfo.productFee = productFee;
|
224
275
|
feesChanged = true;
|
225
276
|
}
|
226
277
|
|
227
278
|
// update processing fee if required
|
228
|
-
if(!FeeLib.eq(
|
229
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
230
|
-
|
279
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
280
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
281
|
+
feeInfo.processingFee = processingFee;
|
231
282
|
feesChanged = true;
|
232
283
|
}
|
233
284
|
|
234
285
|
if(feesChanged) {
|
235
|
-
instance.getInstanceStore().
|
286
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
236
287
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
237
288
|
}
|
238
289
|
}
|
239
290
|
|
240
|
-
|
291
|
+
|
292
|
+
function _createProduct(
|
241
293
|
InstanceStore instanceStore,
|
242
|
-
NftId productNftId,
|
243
|
-
|
244
|
-
)
|
245
|
-
|
246
|
-
virtual
|
247
|
-
// TODO re-enable once role granting is stable and fixed
|
248
|
-
// restricted()
|
294
|
+
NftId productNftId,
|
295
|
+
address productAddress
|
296
|
+
)
|
297
|
+
internal
|
298
|
+
virtual
|
249
299
|
{
|
250
|
-
|
251
|
-
|
252
|
-
|
300
|
+
// create product in instance instanceStore
|
301
|
+
IProductComponent product = IProductComponent(productAddress);
|
302
|
+
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
303
|
+
// force initialization of linked components with empty values to
|
304
|
+
// ensure no components are linked upon initialization of the product
|
305
|
+
initialProductInfo.poolNftId = NftIdLib.zero();
|
306
|
+
initialProductInfo.distributionNftId = NftIdLib.zero();
|
307
|
+
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
253
308
|
|
309
|
+
// create info
|
310
|
+
instanceStore.createProduct(
|
311
|
+
productNftId,
|
312
|
+
initialProductInfo);
|
254
313
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
// TODO re-enable once role granting is stable and fixed
|
259
|
-
// restricted()
|
260
|
-
{
|
261
|
-
_checkNftType(productNftId, PRODUCT());
|
262
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
314
|
+
instanceStore.createFee(
|
315
|
+
productNftId,
|
316
|
+
product.getInitialFeeInfo());
|
263
317
|
}
|
264
318
|
|
265
319
|
//-------- distribution -------------------------------------------------//
|
266
320
|
|
267
321
|
/// @dev registers the sending component as a distribution component
|
268
|
-
function
|
322
|
+
function _createDistribution(
|
323
|
+
InstanceStore instanceStore,
|
324
|
+
NftId productNftId,
|
325
|
+
NftId distributionNftId,
|
326
|
+
IComponents.ProductInfo memory productInfo
|
327
|
+
)
|
269
328
|
internal
|
270
329
|
virtual
|
271
|
-
|
330
|
+
nonReentrant()
|
272
331
|
{
|
273
|
-
// register/create component info
|
274
|
-
InstanceReader instanceReader;
|
275
|
-
InstanceAdmin instanceAdmin;
|
276
|
-
InstanceStore instanceStore;
|
277
|
-
NftId productNftId;
|
278
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
279
|
-
distributioAddress,
|
280
|
-
DISTRIBUTION());
|
281
|
-
|
282
332
|
// check product is still expecting a distribution registration
|
283
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
284
333
|
if (!productInfo.hasDistribution) {
|
285
334
|
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
286
335
|
}
|
@@ -291,10 +340,6 @@ contract ComponentService is
|
|
291
340
|
// set distribution in product info
|
292
341
|
productInfo.distributionNftId = distributionNftId;
|
293
342
|
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
294
|
-
|
295
|
-
// authorize
|
296
|
-
instanceAdmin.initializeComponentAuthorization(
|
297
|
-
IInstanceLinkedComponent(distributioAddress));
|
298
343
|
}
|
299
344
|
|
300
345
|
|
@@ -304,114 +349,45 @@ contract ComponentService is
|
|
304
349
|
)
|
305
350
|
external
|
306
351
|
virtual
|
352
|
+
restricted()
|
307
353
|
{
|
308
|
-
(NftId distributionNftId, IInstance instance) =
|
309
|
-
(NftId productNftId, IComponents.
|
354
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyComponent(DISTRIBUTION(), true);
|
355
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
310
356
|
instance.getInstanceReader(), distributionNftId);
|
311
357
|
bool feesChanged = false;
|
312
358
|
|
313
359
|
// update distributino fee if required
|
314
|
-
if(!FeeLib.eq(
|
315
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
316
|
-
|
360
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
361
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
362
|
+
feeInfo.distributionFee = distributionFee;
|
317
363
|
feesChanged = true;
|
318
364
|
}
|
319
365
|
|
320
366
|
// update min distribution owner fee if required
|
321
|
-
if(!FeeLib.eq(
|
322
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
323
|
-
|
367
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
368
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
369
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
324
370
|
feesChanged = true;
|
325
371
|
}
|
326
372
|
|
327
373
|
if(feesChanged) {
|
328
|
-
instance.getInstanceStore().
|
374
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
329
375
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
330
376
|
}
|
331
377
|
}
|
332
378
|
|
333
|
-
function increaseDistributionBalance(
|
334
|
-
InstanceStore instanceStore,
|
335
|
-
NftId distributionNftId,
|
336
|
-
Amount amount,
|
337
|
-
Amount feeAmount
|
338
|
-
)
|
339
|
-
external
|
340
|
-
virtual
|
341
|
-
// TODO re-enable once role granting is stable and fixed
|
342
|
-
// restricted()
|
343
|
-
{
|
344
|
-
_checkNftType(distributionNftId, DISTRIBUTION());
|
345
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
346
|
-
}
|
347
|
-
|
348
|
-
|
349
|
-
function decreaseDistributionBalance(
|
350
|
-
InstanceStore instanceStore,
|
351
|
-
NftId distributionNftId,
|
352
|
-
Amount amount,
|
353
|
-
Amount feeAmount
|
354
|
-
)
|
355
|
-
external
|
356
|
-
virtual
|
357
|
-
// TODO re-enable once role granting is stable and fixed
|
358
|
-
// restricted()
|
359
|
-
{
|
360
|
-
_checkNftType(distributionNftId, DISTRIBUTION());
|
361
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
362
|
-
}
|
363
|
-
|
364
|
-
//-------- distributor -------------------------------------------------------//
|
365
|
-
|
366
|
-
function increaseDistributorBalance(
|
367
|
-
InstanceStore instanceStore,
|
368
|
-
NftId distributorNftId,
|
369
|
-
Amount amount,
|
370
|
-
Amount feeAmount
|
371
|
-
)
|
372
|
-
external
|
373
|
-
virtual
|
374
|
-
// TODO re-enable once role granting is stable and fixed
|
375
|
-
// restricted()
|
376
|
-
{
|
377
|
-
_checkNftType(distributorNftId, DISTRIBUTOR());
|
378
|
-
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
379
|
-
}
|
380
|
-
|
381
|
-
function decreaseDistributorBalance(
|
382
|
-
InstanceStore instanceStore,
|
383
|
-
NftId distributorNftId,
|
384
|
-
Amount amount,
|
385
|
-
Amount feeAmount
|
386
|
-
)
|
387
|
-
external
|
388
|
-
virtual
|
389
|
-
// TODO re-enable once role granting is stable and fixed
|
390
|
-
// restricted()
|
391
|
-
{
|
392
|
-
_checkNftType(distributorNftId, DISTRIBUTOR());
|
393
|
-
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
394
|
-
}
|
395
|
-
|
396
379
|
//-------- oracle -------------------------------------------------------//
|
397
380
|
|
398
|
-
function
|
381
|
+
function _createOracle(
|
382
|
+
InstanceStore instanceStore,
|
383
|
+
NftId productNftId,
|
384
|
+
NftId oracleNftId,
|
385
|
+
IComponents.ProductInfo memory productInfo
|
386
|
+
)
|
399
387
|
internal
|
400
388
|
virtual
|
401
|
-
returns (NftId oracleNftId)
|
402
389
|
{
|
403
|
-
// register/create component setup
|
404
|
-
InstanceReader instanceReader;
|
405
|
-
InstanceAdmin instanceAdmin;
|
406
|
-
InstanceStore instanceStore;
|
407
|
-
NftId productNftId;
|
408
|
-
|
409
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
410
|
-
oracleAddress,
|
411
|
-
ORACLE());
|
412
|
-
|
413
390
|
// check product is still expecting an oracle registration
|
414
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
415
391
|
if (productInfo.expectedNumberOfOracles == 0) {
|
416
392
|
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
417
393
|
}
|
@@ -423,37 +399,28 @@ contract ComponentService is
|
|
423
399
|
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
424
400
|
productInfo.numberOfOracles++;
|
425
401
|
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
426
|
-
|
427
|
-
// authorize
|
428
|
-
instanceAdmin.initializeComponentAuthorization(
|
429
|
-
IInstanceLinkedComponent(oracleAddress));
|
430
402
|
}
|
431
403
|
|
432
404
|
//-------- pool ---------------------------------------------------------//
|
433
405
|
|
434
|
-
function
|
406
|
+
function _createPool(
|
407
|
+
InstanceStore instanceStore,
|
408
|
+
NftId productNftId,
|
409
|
+
NftId poolNftId,
|
410
|
+
address componentAddress,
|
411
|
+
IComponents.ProductInfo memory productInfo
|
412
|
+
)
|
435
413
|
internal
|
436
414
|
virtual
|
437
|
-
returns (NftId poolNftId)
|
438
415
|
{
|
439
|
-
// register/create component setup
|
440
|
-
InstanceReader instanceReader;
|
441
|
-
InstanceAdmin instanceAdmin;
|
442
|
-
InstanceStore instanceStore;
|
443
|
-
NftId productNftId;
|
444
|
-
|
445
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
446
|
-
poolAddress,
|
447
|
-
POOL());
|
448
|
-
|
449
416
|
// check product is still expecting a pool registration
|
450
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
417
|
+
//IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
451
418
|
if (productInfo.poolNftId.gtz()) {
|
452
419
|
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
453
420
|
}
|
454
421
|
|
455
422
|
// create info
|
456
|
-
IPoolComponent pool = IPoolComponent(
|
423
|
+
IPoolComponent pool = IPoolComponent(componentAddress);
|
457
424
|
instanceStore.createPool(
|
458
425
|
poolNftId,
|
459
426
|
pool.getInitialPoolInfo());
|
@@ -461,9 +428,6 @@ contract ComponentService is
|
|
461
428
|
// update pool in product info
|
462
429
|
productInfo.poolNftId = poolNftId;
|
463
430
|
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
464
|
-
|
465
|
-
// authorize
|
466
|
-
instanceAdmin.initializeComponentAuthorization(pool);
|
467
431
|
}
|
468
432
|
|
469
433
|
|
@@ -474,183 +438,108 @@ contract ComponentService is
|
|
474
438
|
)
|
475
439
|
external
|
476
440
|
virtual
|
441
|
+
restricted()
|
477
442
|
{
|
478
|
-
(NftId poolNftId, IInstance instance) =
|
443
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
|
479
444
|
|
480
|
-
(NftId productNftId, IComponents.
|
445
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
481
446
|
instance.getInstanceReader(), poolNftId);
|
482
447
|
bool feesChanged = false;
|
483
448
|
|
484
449
|
// update pool fee if required
|
485
|
-
if(!FeeLib.eq(
|
486
|
-
_logUpdateFee(productNftId, "PoolFee",
|
487
|
-
|
450
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
451
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
452
|
+
feeInfo.poolFee = poolFee;
|
488
453
|
feesChanged = true;
|
489
454
|
}
|
490
455
|
|
491
456
|
// update staking fee if required
|
492
|
-
if(!FeeLib.eq(
|
493
|
-
_logUpdateFee(productNftId, "StakingFee",
|
494
|
-
|
457
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
458
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
459
|
+
feeInfo.stakingFee = stakingFee;
|
495
460
|
feesChanged = true;
|
496
461
|
}
|
497
462
|
|
498
463
|
// update performance fee if required
|
499
|
-
if(!FeeLib.eq(
|
500
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
501
|
-
|
464
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
465
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
466
|
+
feeInfo.performanceFee = performanceFee;
|
502
467
|
feesChanged = true;
|
503
468
|
}
|
504
469
|
|
505
470
|
if(feesChanged) {
|
506
|
-
instance.getInstanceStore().
|
471
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
507
472
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
508
473
|
}
|
509
474
|
}
|
510
475
|
|
511
|
-
function increasePoolBalance(
|
512
|
-
InstanceStore instanceStore,
|
513
|
-
NftId poolNftId,
|
514
|
-
Amount amount,
|
515
|
-
Amount feeAmount
|
516
|
-
)
|
517
|
-
public
|
518
|
-
virtual
|
519
|
-
// TODO re-enable once role granting is stable and fixed
|
520
|
-
// restricted()
|
521
|
-
{
|
522
|
-
_checkNftType(poolNftId, POOL());
|
523
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
524
|
-
}
|
525
|
-
|
526
|
-
function decreasePoolBalance(
|
527
|
-
InstanceStore instanceStore,
|
528
|
-
NftId poolNftId,
|
529
|
-
Amount amount,
|
530
|
-
Amount feeAmount
|
531
|
-
)
|
532
|
-
public
|
533
|
-
virtual
|
534
|
-
// TODO re-enable once role granting is stable and fixed
|
535
|
-
// restricted()
|
536
|
-
{
|
537
|
-
_checkNftType(poolNftId, POOL());
|
538
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
539
|
-
}
|
540
|
-
|
541
|
-
//-------- bundle -------------------------------------------------------//
|
542
|
-
|
543
|
-
function increaseBundleBalance(
|
544
|
-
InstanceStore instanceStore,
|
545
|
-
NftId bundleNftId,
|
546
|
-
Amount amount,
|
547
|
-
Amount feeAmount
|
548
|
-
)
|
549
|
-
external
|
550
|
-
virtual
|
551
|
-
// TODO re-enable once role granting is stable and fixed
|
552
|
-
// restricted()
|
553
|
-
{
|
554
|
-
_checkNftType(bundleNftId, BUNDLE());
|
555
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
556
|
-
}
|
557
|
-
|
558
|
-
function decreaseBundleBalance(
|
559
|
-
InstanceStore instanceStore,
|
560
|
-
NftId bundleNftId,
|
561
|
-
Amount amount,
|
562
|
-
Amount feeAmount
|
563
|
-
)
|
564
|
-
external
|
565
|
-
virtual
|
566
|
-
// TODO re-enable once role granting is stable and fixed
|
567
|
-
// restricted()
|
568
|
-
{
|
569
|
-
_checkNftType(bundleNftId, BUNDLE());
|
570
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
571
|
-
}
|
572
|
-
|
573
|
-
|
574
|
-
//-------- internal functions ------------------------------------------//
|
575
|
-
|
576
|
-
function _changeTargetBalance(
|
577
|
-
bool increase,
|
578
|
-
InstanceStore instanceStore,
|
579
|
-
NftId targetNftId,
|
580
|
-
Amount amount,
|
581
|
-
Amount feeAmount
|
582
|
-
)
|
583
|
-
internal
|
584
|
-
virtual
|
585
|
-
{
|
586
|
-
Amount totalAmount = amount + feeAmount;
|
587
|
-
|
588
|
-
if(increase) {
|
589
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
590
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
591
|
-
} else {
|
592
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
593
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
594
|
-
}
|
595
|
-
}
|
596
476
|
|
597
477
|
/// @dev Registers the component represented by the provided address.
|
598
|
-
|
599
|
-
|
600
|
-
|
478
|
+
/// The caller must ensure componentAddress is IInstanceLinkedComponent.
|
479
|
+
function _verifyAndRegister(
|
480
|
+
IInstance instance,
|
481
|
+
address componentAddress,
|
482
|
+
NftId parentNftId,
|
483
|
+
address token
|
601
484
|
)
|
602
485
|
internal
|
603
486
|
virtual
|
604
|
-
returns (
|
605
|
-
InstanceReader instanceReader,
|
606
|
-
InstanceAdmin instanceAdmin,
|
607
|
-
InstanceStore instanceStore,
|
608
|
-
NftId parentNftId,
|
609
|
-
NftId componentNftId
|
610
|
-
)
|
487
|
+
returns (NftId componentNftId)
|
611
488
|
{
|
612
|
-
NftId instanceNftId;
|
613
|
-
IInstance instance;
|
614
|
-
IInstanceLinkedComponent component;
|
615
|
-
address initialOwner;
|
616
|
-
|
617
489
|
(
|
618
|
-
|
619
|
-
|
620
|
-
parentNftId,
|
621
|
-
component,
|
622
|
-
initialOwner
|
490
|
+
IInstanceLinkedComponent component,
|
491
|
+
IRegistry.ObjectInfo memory objectInfo // initial component info
|
623
492
|
) = _getAndVerifyRegisterableComponent(
|
624
|
-
getRegistry(),
|
625
493
|
componentAddress,
|
626
|
-
|
494
|
+
parentNftId);
|
627
495
|
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
496
|
+
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
497
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
498
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
499
|
+
ObjectType componentType = objectInfo.objectType;
|
632
500
|
|
633
|
-
|
634
|
-
|
501
|
+
if(componentType == PRODUCT()) {
|
502
|
+
// register product with registry
|
635
503
|
componentNftId = _registryService.registerProduct(
|
636
|
-
component,
|
504
|
+
component,
|
505
|
+
objectInfo.initialOwner).nftId;
|
506
|
+
|
507
|
+
// create product info in instance store
|
508
|
+
_createProduct(instanceStore, componentNftId, componentAddress);
|
637
509
|
} else {
|
510
|
+
// register non product component with registry
|
638
511
|
componentNftId = _registryService.registerProductLinkedComponent(
|
639
|
-
component,
|
512
|
+
component,
|
513
|
+
objectInfo.objectType,
|
514
|
+
objectInfo.initialOwner).nftId;
|
515
|
+
|
516
|
+
// create non product component info in instance store
|
517
|
+
NftId productNftId = parentNftId;
|
518
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
519
|
+
if(componentType == POOL()) {
|
520
|
+
_createPool(instanceStore, productNftId, componentNftId, componentAddress, productInfo);
|
521
|
+
} else if(componentType == DISTRIBUTION()) {
|
522
|
+
_createDistribution(instanceStore, productNftId, componentNftId, productInfo);
|
523
|
+
} else if(componentType == ORACLE()) {
|
524
|
+
_createOracle(instanceStore, productNftId, componentNftId, productInfo);
|
525
|
+
} else {
|
526
|
+
revert ErrorComponentServiceComponentTypeNotSupported(componentAddress, componentType);
|
527
|
+
}
|
528
|
+
|
529
|
+
// get product's token
|
530
|
+
token = address(instanceReader.getTokenHandler(productNftId).TOKEN());
|
640
531
|
}
|
641
532
|
|
533
|
+
_checkToken(instance, token);
|
534
|
+
|
642
535
|
// deploy and wire token handler
|
643
536
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
644
|
-
IERC20Metadata token = componentInfo.token;
|
645
537
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
646
538
|
address(getRegistry()),
|
647
539
|
address(component), // initially, component is its own wallet
|
648
|
-
|
649
|
-
|
540
|
+
token,
|
541
|
+
instanceAdmin.authority());
|
650
542
|
|
651
|
-
// set token handler allowance to max
|
652
|
-
// componentInfo.tokenHandler.approve(token, AmountLib.max());
|
653
|
-
|
654
543
|
// register component with instance
|
655
544
|
instanceStore.createComponent(
|
656
545
|
componentNftId,
|
@@ -659,7 +548,34 @@ contract ComponentService is
|
|
659
548
|
// link component contract to nft id
|
660
549
|
component.linkToRegisteredNftId();
|
661
550
|
|
662
|
-
|
551
|
+
// authorize
|
552
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
|
553
|
+
|
554
|
+
emit LogComponentServiceRegistered(
|
555
|
+
instance.getNftId(),
|
556
|
+
componentNftId,
|
557
|
+
componentType,
|
558
|
+
address(component),
|
559
|
+
token,
|
560
|
+
objectInfo.initialOwner);
|
561
|
+
}
|
562
|
+
|
563
|
+
|
564
|
+
function _checkToken(IInstance instance, address token)
|
565
|
+
internal
|
566
|
+
view
|
567
|
+
{
|
568
|
+
if (! instance.isTokenRegistryDisabled()) {
|
569
|
+
// check if provided token is whitelisted and active
|
570
|
+
if (!ContractLib.isActiveToken(
|
571
|
+
getRegistry().getTokenRegistryAddress(),
|
572
|
+
ChainIdLib.current(),
|
573
|
+
token,
|
574
|
+
AccessManagerCloneable(authority()).getRelease())
|
575
|
+
) {
|
576
|
+
revert ErrorComponentServiceTokenInvalid(token);
|
577
|
+
}
|
578
|
+
}
|
663
579
|
}
|
664
580
|
|
665
581
|
|
@@ -678,7 +594,7 @@ contract ComponentService is
|
|
678
594
|
}
|
679
595
|
|
680
596
|
|
681
|
-
function
|
597
|
+
function _getLinkedFeeInfo(
|
682
598
|
InstanceReader instanceReader,
|
683
599
|
NftId componentNftId
|
684
600
|
)
|
@@ -686,92 +602,56 @@ contract ComponentService is
|
|
686
602
|
view
|
687
603
|
returns(
|
688
604
|
NftId productNftId,
|
689
|
-
IComponents.
|
605
|
+
IComponents.FeeInfo memory info
|
690
606
|
)
|
691
607
|
{
|
692
|
-
productNftId = getRegistry().
|
693
|
-
info = instanceReader.
|
608
|
+
productNftId = getRegistry().getParentNftId(componentNftId);
|
609
|
+
info = instanceReader.getFeeInfo(productNftId);
|
694
610
|
}
|
695
611
|
|
696
612
|
|
697
613
|
/// @dev Based on the provided component address required type the component
|
698
614
|
/// and related instance contract this function reverts iff:
|
699
|
-
/// - the
|
700
|
-
/// - the component
|
701
|
-
/// - the component type does not match with the required type
|
615
|
+
/// - the component parent does not match with the required parent
|
616
|
+
/// - the component release does not match with the service release
|
702
617
|
/// - the component has already been registered
|
703
618
|
function _getAndVerifyRegisterableComponent(
|
704
|
-
IRegistry registry,
|
705
619
|
address componentAddress,
|
706
|
-
|
620
|
+
NftId requiredParent
|
707
621
|
)
|
708
622
|
internal
|
709
623
|
view
|
710
624
|
returns (
|
711
|
-
NftId instanceNftId,
|
712
|
-
IInstance instance,
|
713
|
-
NftId parentNftId,
|
714
625
|
IInstanceLinkedComponent component,
|
715
|
-
|
626
|
+
IRegistry.ObjectInfo memory info
|
716
627
|
)
|
717
628
|
{
|
718
|
-
// check sender (instance or product) is registered
|
719
|
-
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
720
|
-
if (senderInfo.nftId.eqz()) {
|
721
|
-
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
722
|
-
}
|
723
|
-
|
724
|
-
// the sender is the parent of the component to be registered
|
725
|
-
// an instance caller wanting to register a product - or -
|
726
|
-
// a product caller wantint go register a distribution, oracle or pool
|
727
|
-
parentNftId = senderInfo.nftId;
|
728
|
-
|
729
|
-
// check component is of required type
|
730
629
|
component = IInstanceLinkedComponent(componentAddress);
|
731
|
-
|
732
|
-
if(info.objectType != requiredType) {
|
733
|
-
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
734
|
-
}
|
630
|
+
info = component.getInitialInfo();
|
735
631
|
|
736
|
-
// check component
|
737
|
-
if
|
738
|
-
revert
|
632
|
+
// check component parent
|
633
|
+
if(info.parentNftId != requiredParent) {
|
634
|
+
revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
|
739
635
|
}
|
740
636
|
|
741
|
-
// check release
|
742
|
-
|
743
|
-
|
744
|
-
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
637
|
+
// check component release (must match with service release)
|
638
|
+
if(component.getRelease() != getRelease()) {
|
639
|
+
revert ErrorComponentServiceComponentReleaseMismatch(componentAddress, getRelease(), component.getRelease());
|
745
640
|
}
|
746
641
|
|
747
|
-
// check component
|
748
|
-
|
749
|
-
|
750
|
-
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
642
|
+
// check component has not already been registered
|
643
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
644
|
+
revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
|
751
645
|
}
|
646
|
+
}
|
752
647
|
|
753
|
-
// verify parent is registered instance
|
754
|
-
if (requiredType == PRODUCT()) {
|
755
|
-
if (senderInfo.objectType != INSTANCE()) {
|
756
|
-
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
757
|
-
}
|
758
|
-
|
759
|
-
instanceNftId = senderInfo.nftId;
|
760
|
-
// verify parent is registered product
|
761
|
-
} else {
|
762
|
-
if (senderInfo.objectType != PRODUCT()) {
|
763
|
-
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
764
|
-
}
|
765
|
-
|
766
|
-
instanceNftId = senderInfo.parentNftId;
|
767
|
-
}
|
768
648
|
|
769
|
-
|
770
|
-
|
771
|
-
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
649
|
+
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
650
|
+
instanceAdmin.setTargetLocked(componentAddress, locked);
|
772
651
|
}
|
773
652
|
|
774
|
-
|
653
|
+
|
654
|
+
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
775
655
|
internal
|
776
656
|
view
|
777
657
|
returns (
|
@@ -787,12 +667,12 @@ contract ComponentService is
|
|
787
667
|
getRegistry(),
|
788
668
|
msg.sender, // caller
|
789
669
|
expectedType,
|
790
|
-
|
670
|
+
isActive);
|
791
671
|
} else {
|
792
672
|
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
793
673
|
getRegistry(),
|
794
674
|
msg.sender,
|
795
|
-
|
675
|
+
isActive);
|
796
676
|
}
|
797
677
|
|
798
678
|
// get component nft id and instance
|
@@ -800,6 +680,7 @@ contract ComponentService is
|
|
800
680
|
instance = IInstance(instanceAddress);
|
801
681
|
}
|
802
682
|
|
683
|
+
|
803
684
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
804
685
|
return COMPONENT();
|
805
686
|
}
|