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