@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,43 +1,39 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
5
5
|
import {IBundleService} from "./IBundleService.sol";
|
6
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
8
8
|
import {IInstance} from "../instance/IInstance.sol";
|
9
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
9
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
11
|
import {IPoolService} from "./IPoolService.sol";
|
12
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
12
13
|
import {IRegistry} from "../registry/IRegistry.sol";
|
13
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
14
14
|
import {IStaking} from "../staking/IStaking.sol";
|
15
15
|
|
16
16
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
|
-
import {
|
18
|
-
import {
|
19
|
-
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
20
|
-
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
21
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
22
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
23
|
-
import {Seconds} from "../type/Seconds.sol";
|
24
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
25
|
-
import {UFixed} from "../type/UFixed.sol";
|
26
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
17
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
18
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
27
19
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
28
20
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
21
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
22
|
+
import {NftId} from "../type/NftId.sol";
|
23
|
+
import {ObjectType, ACCOUNTING, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
24
|
+
import {PayoutId} from "../type/PayoutId.sol";
|
25
|
+
import {PoolLib} from "./PoolLib.sol";
|
26
|
+
import {Service} from "../shared/Service.sol";
|
27
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
29
28
|
|
30
|
-
string constant POOL_SERVICE_NAME = "PoolService";
|
31
29
|
|
32
30
|
contract PoolService is
|
33
|
-
|
31
|
+
Service,
|
34
32
|
IPoolService
|
35
33
|
{
|
34
|
+
IAccountingService private _accountingService;
|
36
35
|
IBundleService internal _bundleService;
|
37
36
|
IComponentService internal _componentService;
|
38
|
-
IInstanceService private _instanceService;
|
39
|
-
IRegistryService private _registryService;
|
40
|
-
|
41
37
|
IStaking private _staking;
|
42
38
|
|
43
39
|
function _initialize(
|
@@ -45,33 +41,32 @@ contract PoolService is
|
|
45
41
|
bytes memory data
|
46
42
|
)
|
47
43
|
internal
|
48
|
-
initializer
|
49
44
|
virtual override
|
45
|
+
initializer()
|
50
46
|
{
|
51
47
|
(
|
52
|
-
address
|
53
|
-
|
54
|
-
|
55
|
-
) = abi.decode(data, (address, address, address));
|
48
|
+
address authority,
|
49
|
+
address registry
|
50
|
+
) = abi.decode(data, (address, address));
|
56
51
|
|
57
|
-
|
52
|
+
__Service_init(authority, registry, owner);
|
58
53
|
|
59
|
-
|
54
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
60
55
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
61
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
62
56
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
63
|
-
|
64
57
|
_staking = IStaking(getRegistry().getStakingAddress());
|
65
58
|
|
66
|
-
|
59
|
+
_registerInterface(type(IPoolService).interfaceId);
|
67
60
|
}
|
68
61
|
|
62
|
+
|
69
63
|
/// @inheritdoc IPoolService
|
70
64
|
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
71
65
|
external
|
72
66
|
virtual
|
67
|
+
restricted()
|
73
68
|
{
|
74
|
-
(NftId poolNftId
|
69
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
75
70
|
InstanceReader instanceReader = instance.getInstanceReader();
|
76
71
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
77
72
|
|
@@ -82,106 +77,22 @@ contract PoolService is
|
|
82
77
|
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
83
78
|
}
|
84
79
|
|
85
|
-
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
86
|
-
external
|
87
|
-
virtual
|
88
|
-
{
|
89
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
90
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
91
|
-
|
92
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
93
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
94
|
-
|
95
|
-
// bundle owner role may only be set once per pool
|
96
|
-
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
97
|
-
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
98
|
-
}
|
99
|
-
|
100
|
-
poolInfo.bundleOwnerRole = bundleOwnerRole;
|
101
|
-
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
102
|
-
|
103
|
-
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
104
|
-
}
|
105
|
-
|
106
|
-
/// @inheritdoc IPoolService
|
107
|
-
function createBundle(
|
108
|
-
address bundleOwner, // initial bundle owner
|
109
|
-
Fee memory fee, // fees deducted from premium that go to bundle owner
|
110
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
111
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
112
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
113
|
-
)
|
114
|
-
external
|
115
|
-
virtual
|
116
|
-
returns(NftId bundleNftId, Amount netStakedAmount)
|
117
|
-
{
|
118
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
119
|
-
|
120
|
-
{
|
121
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
122
|
-
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
123
|
-
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
124
|
-
if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
|
125
|
-
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
|
-
|
130
|
-
Amount stakingFeeAmount;
|
131
|
-
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
132
|
-
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
133
|
-
stakingAmount);
|
134
|
-
|
135
|
-
|
136
|
-
bundleNftId = _bundleService.create(
|
137
|
-
instance,
|
138
|
-
poolNftId,
|
139
|
-
bundleOwner,
|
140
|
-
fee,
|
141
|
-
netStakedAmount,
|
142
|
-
lifetime,
|
143
|
-
filter);
|
144
|
-
|
145
|
-
// pool book keeping
|
146
|
-
_componentService.increasePoolBalance(
|
147
|
-
instance.getInstanceStore(),
|
148
|
-
poolNftId,
|
149
|
-
netStakedAmount,
|
150
|
-
stakingFeeAmount);
|
151
|
-
|
152
|
-
// TODO only collect staking token when pool is not externally managed
|
153
|
-
// pool bookkeeping and collect tokens from bundle owner
|
154
|
-
_collectStakingAmount(
|
155
|
-
instance.getInstanceReader(),
|
156
|
-
poolNftId,
|
157
|
-
bundleOwner,
|
158
|
-
stakingAmount);
|
159
|
-
|
160
|
-
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
161
|
-
}
|
162
|
-
|
163
|
-
function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
|
164
|
-
internal
|
165
|
-
virtual
|
166
|
-
view
|
167
|
-
returns (Fee memory stakingFee)
|
168
|
-
{
|
169
|
-
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
170
|
-
return instanceReader.getProductInfo(productNftId).stakingFee;
|
171
|
-
}
|
172
80
|
|
173
81
|
function closeBundle(NftId bundleNftId)
|
174
82
|
external
|
83
|
+
restricted()
|
175
84
|
virtual
|
176
85
|
{
|
177
|
-
(
|
86
|
+
_checkNftType(bundleNftId, BUNDLE());
|
87
|
+
|
88
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
178
89
|
|
179
90
|
// TODO get performance fee for pool (#477)
|
180
91
|
|
181
92
|
// releasing collateral in bundle
|
182
93
|
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
183
94
|
|
184
|
-
|
95
|
+
_accountingService.decreasePoolBalance(
|
185
96
|
instance.getInstanceStore(),
|
186
97
|
poolNftId,
|
187
98
|
unstakedAmount + feeAmount,
|
@@ -191,28 +102,89 @@ contract PoolService is
|
|
191
102
|
|
192
103
|
if ((unstakedAmount + feeAmount).gtz()){
|
193
104
|
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
194
|
-
poolComponentInfo.tokenHandler.
|
195
|
-
poolComponentInfo.wallet,
|
105
|
+
poolComponentInfo.tokenHandler.pushToken(
|
196
106
|
getRegistry().ownerOf(bundleNftId),
|
197
107
|
unstakedAmount + feeAmount);
|
198
108
|
}
|
199
109
|
}
|
200
110
|
|
111
|
+
|
201
112
|
/// @inheritdoc IPoolService
|
202
|
-
function
|
203
|
-
|
113
|
+
function processFundedClaim(
|
114
|
+
NftId policyNftId,
|
115
|
+
ClaimId claimId,
|
116
|
+
Amount availableAmount
|
117
|
+
)
|
118
|
+
external
|
119
|
+
restricted()
|
204
120
|
virtual
|
205
|
-
// TODO: restricted() (once #462 is done)
|
206
|
-
returns(Amount netAmount)
|
207
121
|
{
|
208
|
-
(
|
122
|
+
_checkNftType(policyNftId, POLICY());
|
123
|
+
|
124
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
209
125
|
InstanceReader instanceReader = instance.getInstanceReader();
|
210
|
-
|
211
|
-
|
126
|
+
NftId productNftId = getRegistry().getParentNftId(poolNftId);
|
127
|
+
|
128
|
+
// check policy matches with calling pool
|
129
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
130
|
+
if(policyInfo.productNftId != productNftId) {
|
131
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
132
|
+
policyNftId,
|
133
|
+
policyInfo.productNftId,
|
134
|
+
productNftId);
|
135
|
+
}
|
212
136
|
|
213
|
-
|
214
|
-
|
137
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
138
|
+
|
139
|
+
// callback to product component if applicable
|
140
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
141
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
142
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
215
143
|
}
|
144
|
+
}
|
145
|
+
|
146
|
+
|
147
|
+
// function _checkAndGetPoolInfo(NftId bundleNftId)
|
148
|
+
// internal
|
149
|
+
// view
|
150
|
+
// returns (
|
151
|
+
// InstanceReader instanceReader,
|
152
|
+
// InstanceStore instanceStore,
|
153
|
+
// NftId instanceNftId,
|
154
|
+
// NftId poolNftId,
|
155
|
+
// IComponents.PoolInfo memory poolInfo
|
156
|
+
// )
|
157
|
+
// {
|
158
|
+
// _checkNftType(bundleNftId, BUNDLE());
|
159
|
+
|
160
|
+
// (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
161
|
+
// instanceReader = instance.getInstanceReader();
|
162
|
+
// instanceStore = instance.getInstanceStore();
|
163
|
+
// instanceNftId = instance.getNftId();
|
164
|
+
// poolInfo = instanceReader.getPoolInfo(poolNftId);
|
165
|
+
|
166
|
+
// if (getRegistry().getParentNftId(bundleNftId) != poolNftId) {
|
167
|
+
// revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
168
|
+
// }
|
169
|
+
// }
|
170
|
+
|
171
|
+
|
172
|
+
/// @inheritdoc IPoolService
|
173
|
+
function stake(NftId bundleNftId, Amount amount)
|
174
|
+
external
|
175
|
+
virtual
|
176
|
+
restricted()
|
177
|
+
returns(
|
178
|
+
Amount netAmount
|
179
|
+
)
|
180
|
+
{
|
181
|
+
(
|
182
|
+
InstanceReader instanceReader,
|
183
|
+
InstanceStore instanceStore,
|
184
|
+
NftId instanceNftId,
|
185
|
+
NftId poolNftId,
|
186
|
+
IComponents.PoolInfo memory poolInfo
|
187
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
216
188
|
|
217
189
|
{
|
218
190
|
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
@@ -226,124 +198,171 @@ contract PoolService is
|
|
226
198
|
(
|
227
199
|
feeAmount,
|
228
200
|
netAmount
|
229
|
-
) =
|
230
|
-
|
201
|
+
) = PoolLib.calculateStakingAmounts(
|
202
|
+
getRegistry(),
|
203
|
+
instanceReader,
|
204
|
+
poolNftId,
|
231
205
|
amount);
|
232
206
|
|
233
|
-
// do all the
|
234
|
-
|
235
|
-
|
207
|
+
// do all the book keeping
|
208
|
+
_accountingService.increasePoolBalance(
|
209
|
+
instanceStore,
|
236
210
|
poolNftId,
|
237
211
|
netAmount,
|
238
212
|
feeAmount);
|
239
213
|
|
240
|
-
_bundleService.stake(
|
214
|
+
_bundleService.stake(instanceReader, instanceStore, bundleNftId, netAmount);
|
241
215
|
|
242
|
-
|
243
|
-
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
244
|
-
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
216
|
+
emit LogPoolServiceBundleStaked(instanceNftId, poolNftId, bundleNftId, amount, netAmount);
|
245
217
|
|
246
|
-
//
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
bundleOwner
|
251
|
-
|
218
|
+
// only collect staking amount when pool is not externally managed
|
219
|
+
if (!poolInfo.isExternallyManaged) {
|
220
|
+
|
221
|
+
// collect tokens from bundle owner
|
222
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
223
|
+
PoolLib.pullStakingAmount(
|
224
|
+
instanceReader,
|
225
|
+
poolNftId,
|
226
|
+
bundleOwner,
|
227
|
+
amount);
|
228
|
+
}
|
252
229
|
}
|
253
230
|
|
231
|
+
|
254
232
|
/// @inheritdoc IPoolService
|
255
233
|
function unstake(NftId bundleNftId, Amount amount)
|
256
234
|
external
|
257
235
|
virtual
|
258
|
-
|
236
|
+
restricted()
|
259
237
|
returns(Amount netAmount)
|
260
238
|
{
|
261
|
-
(
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
268
|
-
}
|
239
|
+
(
|
240
|
+
InstanceReader instanceReader,
|
241
|
+
InstanceStore instanceStore,
|
242
|
+
NftId instanceNftId,
|
243
|
+
NftId poolNftId,
|
244
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
269
245
|
|
270
246
|
// call bundle service for bookkeeping and additional checks
|
271
|
-
Amount unstakedAmount = _bundleService.unstake(
|
247
|
+
Amount unstakedAmount = _bundleService.unstake(instanceStore, bundleNftId, amount);
|
272
248
|
|
273
249
|
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
274
250
|
// if amount was max, this was set to the available amount
|
275
251
|
|
276
252
|
// TODO: handle performance fees (issue #477)
|
253
|
+
netAmount = unstakedAmount;
|
277
254
|
|
278
255
|
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
279
|
-
|
256
|
+
_accountingService.decreasePoolBalance(
|
280
257
|
instanceStore,
|
281
258
|
poolNftId,
|
282
259
|
unstakedAmount,
|
283
260
|
AmountLib.zero());
|
284
261
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
262
|
+
|
263
|
+
emit LogPoolServiceBundleUnstaked(instanceNftId, poolNftId, bundleNftId, unstakedAmount, netAmount);
|
264
|
+
|
265
|
+
// only distribute staking amount when pool is not externally managed
|
266
|
+
if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
|
267
|
+
|
268
|
+
// transfer amount to bundle owner
|
269
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
270
|
+
PoolLib.pushUnstakingAmount(
|
271
|
+
instanceReader,
|
272
|
+
poolNftId,
|
273
|
+
bundleOwner,
|
274
|
+
netAmount);
|
275
|
+
}
|
295
276
|
}
|
296
277
|
|
297
278
|
|
298
|
-
function fundPoolWallet(
|
279
|
+
function fundPoolWallet(Amount amount)
|
299
280
|
external
|
300
281
|
virtual
|
301
282
|
restricted()
|
302
283
|
{
|
303
|
-
|
304
|
-
|
284
|
+
(
|
285
|
+
NftId poolNftId,
|
286
|
+
IInstance instance
|
287
|
+
) = _getAndVerifyActivePool();
|
288
|
+
|
289
|
+
// check that pool is externally managed
|
290
|
+
InstanceReader reader = instance.getInstanceReader();
|
291
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
292
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
293
|
+
}
|
294
|
+
|
295
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
296
|
+
emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
|
297
|
+
|
298
|
+
PoolLib.pullStakingAmount(
|
299
|
+
reader,
|
300
|
+
poolNftId,
|
301
|
+
poolOwner,
|
302
|
+
amount);
|
305
303
|
}
|
306
304
|
|
307
305
|
|
308
|
-
function defundPoolWallet(
|
306
|
+
function defundPoolWallet(Amount amount)
|
309
307
|
external
|
310
308
|
virtual
|
311
309
|
restricted()
|
312
310
|
{
|
313
|
-
|
314
|
-
|
311
|
+
(
|
312
|
+
NftId poolNftId,
|
313
|
+
IInstance instance
|
314
|
+
) = _getAndVerifyActivePool();
|
315
|
+
|
316
|
+
// check that pool is externally managed
|
317
|
+
InstanceReader reader = instance.getInstanceReader();
|
318
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
319
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
320
|
+
}
|
321
|
+
|
322
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
323
|
+
emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
|
324
|
+
|
325
|
+
PoolLib.pushUnstakingAmount(
|
326
|
+
reader,
|
327
|
+
poolNftId,
|
328
|
+
poolOwner,
|
329
|
+
amount);
|
315
330
|
}
|
316
331
|
|
332
|
+
|
317
333
|
function processSale(
|
318
334
|
NftId bundleNftId,
|
319
|
-
IPolicy.
|
335
|
+
IPolicy.PremiumInfo memory premium
|
320
336
|
)
|
321
337
|
external
|
322
338
|
virtual
|
323
339
|
restricted()
|
324
340
|
{
|
341
|
+
_checkNftType(bundleNftId, BUNDLE());
|
342
|
+
|
325
343
|
IRegistry registry = getRegistry();
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
344
|
+
NftId poolNftId = registry.getParentNftId(bundleNftId);
|
345
|
+
(, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
|
346
|
+
IInstance instance = IInstance(instanceAddress);
|
330
347
|
|
331
|
-
Amount poolFeeAmount =
|
332
|
-
Amount bundleFeeAmount =
|
333
|
-
Amount bundleNetAmount =
|
348
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
349
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
350
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
334
351
|
|
335
352
|
InstanceStore instanceStore = instance.getInstanceStore();
|
336
|
-
|
353
|
+
_accountingService.increasePoolBalance(
|
337
354
|
instanceStore,
|
338
|
-
|
355
|
+
poolNftId,
|
339
356
|
bundleNetAmount + bundleFeeAmount,
|
340
357
|
poolFeeAmount);
|
341
358
|
|
342
|
-
|
359
|
+
_accountingService.increaseBundleBalanceForPool(
|
343
360
|
instanceStore,
|
344
|
-
|
361
|
+
bundleNftId,
|
345
362
|
bundleNetAmount,
|
346
363
|
bundleFeeAmount);
|
364
|
+
|
365
|
+
emit LogPoolServiceSaleProcessed(poolNftId, bundleNftId, bundleNetAmount, bundleFeeAmount, poolFeeAmount);
|
347
366
|
}
|
348
367
|
|
349
368
|
|
@@ -359,14 +378,22 @@ contract PoolService is
|
|
359
378
|
virtual
|
360
379
|
restricted()
|
361
380
|
returns (
|
362
|
-
Amount
|
363
|
-
Amount
|
381
|
+
Amount totalCollateralAmount,
|
382
|
+
Amount localCollateralAmount
|
364
383
|
)
|
365
384
|
{
|
385
|
+
_checkNftType(productNftId, PRODUCT());
|
386
|
+
_checkNftType(applicationNftId, POLICY());
|
387
|
+
_checkNftType(bundleNftId, BUNDLE());
|
388
|
+
|
389
|
+
NftId poolNftId;
|
390
|
+
bool poolIsVerifyingApplications;
|
366
391
|
(
|
392
|
+
poolNftId,
|
393
|
+
totalCollateralAmount,
|
367
394
|
localCollateralAmount,
|
368
|
-
|
369
|
-
) = calculateRequiredCollateral(
|
395
|
+
poolIsVerifyingApplications
|
396
|
+
) = PoolLib.calculateRequiredCollateral(
|
370
397
|
instance.getInstanceReader(),
|
371
398
|
productNftId,
|
372
399
|
sumInsuredAmount);
|
@@ -384,36 +411,152 @@ contract PoolService is
|
|
384
411
|
token,
|
385
412
|
totalCollateralAmount);
|
386
413
|
|
387
|
-
//
|
388
|
-
|
389
|
-
|
414
|
+
// pool callback when required
|
415
|
+
if (poolIsVerifyingApplications) {
|
416
|
+
IPoolComponent pool = IPoolComponent(
|
417
|
+
getRegistry().getObjectAddress(poolNftId));
|
418
|
+
|
419
|
+
pool.verifyApplication(
|
420
|
+
applicationNftId,
|
421
|
+
bundleNftId,
|
422
|
+
totalCollateralAmount);
|
390
423
|
|
424
|
+
emit LogPoolServiceApplicationVerified(poolNftId, bundleNftId, applicationNftId, totalCollateralAmount);
|
391
425
|
}
|
392
|
-
}
|
393
426
|
|
427
|
+
emit LogPoolServiceCollateralLocked(
|
428
|
+
poolNftId,
|
429
|
+
bundleNftId,
|
430
|
+
applicationNftId,
|
431
|
+
totalCollateralAmount,
|
432
|
+
localCollateralAmount);
|
433
|
+
}
|
394
434
|
|
395
|
-
function
|
396
|
-
|
397
|
-
|
435
|
+
function processPayout(
|
436
|
+
InstanceReader instanceReader,
|
437
|
+
InstanceStore instanceStore,
|
438
|
+
NftId productNftId,
|
398
439
|
NftId policyNftId,
|
399
|
-
|
400
|
-
|
440
|
+
NftId bundleNftId,
|
441
|
+
PayoutId payoutId,
|
442
|
+
Amount payoutAmount,
|
443
|
+
address payoutBeneficiary
|
401
444
|
)
|
402
445
|
external
|
403
446
|
virtual
|
404
447
|
restricted()
|
448
|
+
returns (
|
449
|
+
Amount netPayoutAmount,
|
450
|
+
Amount processingFeeAmount
|
451
|
+
)
|
405
452
|
{
|
453
|
+
// checks
|
454
|
+
_checkNftType(policyNftId, POLICY());
|
455
|
+
|
456
|
+
// effects
|
457
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
458
|
+
|
459
|
+
_accountingService.decreasePoolBalance(
|
460
|
+
instanceStore,
|
461
|
+
poolNftId,
|
462
|
+
payoutAmount,
|
463
|
+
AmountLib.zero());
|
464
|
+
|
465
|
+
_accountingService.decreaseBundleBalanceForPool(
|
466
|
+
instanceStore,
|
467
|
+
bundleNftId,
|
468
|
+
payoutAmount,
|
469
|
+
AmountLib.zero());
|
470
|
+
|
406
471
|
_bundleService.releaseCollateral(
|
407
|
-
|
472
|
+
instanceStore,
|
408
473
|
policyNftId,
|
409
|
-
|
474
|
+
bundleNftId,
|
410
475
|
payoutAmount);
|
411
476
|
|
412
477
|
// update value locked with staking service
|
478
|
+
TokenHandler poolTokenHandler = instanceReader.getTokenHandler(poolNftId);
|
479
|
+
|
413
480
|
_staking.decreaseTotalValueLocked(
|
414
|
-
|
415
|
-
|
481
|
+
instanceReader.getInstanceNftId(),
|
482
|
+
address(poolTokenHandler.TOKEN()),
|
416
483
|
payoutAmount);
|
484
|
+
|
485
|
+
// interactions
|
486
|
+
(netPayoutAmount, processingFeeAmount) = PoolLib.transferTokenAndNotifyPolicyHolder(
|
487
|
+
getRegistry(),
|
488
|
+
instanceReader,
|
489
|
+
poolTokenHandler,
|
490
|
+
productNftId,
|
491
|
+
policyNftId,
|
492
|
+
payoutId,
|
493
|
+
payoutAmount,
|
494
|
+
payoutBeneficiary);
|
495
|
+
|
496
|
+
if (processingFeeAmount.gtz()) {
|
497
|
+
_accountingService.increaseProductFeesForPool(
|
498
|
+
instanceStore,
|
499
|
+
productNftId,
|
500
|
+
processingFeeAmount);
|
501
|
+
}
|
502
|
+
|
503
|
+
emit LogPoolServicePayoutProcessed(
|
504
|
+
poolNftId,
|
505
|
+
bundleNftId,
|
506
|
+
policyNftId,
|
507
|
+
payoutId,
|
508
|
+
netPayoutAmount,
|
509
|
+
processingFeeAmount,
|
510
|
+
payoutBeneficiary);
|
511
|
+
}
|
512
|
+
|
513
|
+
|
514
|
+
/// @inheritdoc IPoolService
|
515
|
+
function withdrawBundleFees(
|
516
|
+
NftId bundleNftId,
|
517
|
+
Amount amount
|
518
|
+
)
|
519
|
+
public
|
520
|
+
virtual
|
521
|
+
restricted()
|
522
|
+
returns (Amount withdrawnAmount)
|
523
|
+
{
|
524
|
+
// checks
|
525
|
+
_checkNftType(bundleNftId, BUNDLE());
|
526
|
+
|
527
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
528
|
+
InstanceReader reader = instance.getInstanceReader();
|
529
|
+
|
530
|
+
// determine withdrawn amount
|
531
|
+
withdrawnAmount = amount;
|
532
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
533
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
534
|
+
} else {
|
535
|
+
if (withdrawnAmount > reader.getFeeAmount(bundleNftId)) {
|
536
|
+
revert ErrorPoolServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
537
|
+
}
|
538
|
+
}
|
539
|
+
|
540
|
+
// effects
|
541
|
+
// decrease fee counters by withdrawnAmount
|
542
|
+
{
|
543
|
+
InstanceStore store = instance.getInstanceStore();
|
544
|
+
// decrease fee amount of the bundle
|
545
|
+
_accountingService.decreaseBundleBalanceForPool(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
546
|
+
// decrease pool balance
|
547
|
+
_accountingService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
548
|
+
}
|
549
|
+
|
550
|
+
// interactions
|
551
|
+
// transfer amount to bundle owner
|
552
|
+
{
|
553
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
554
|
+
TokenHandler tokenHandler = reader.getTokenHandler(poolNftId);
|
555
|
+
address token = address(tokenHandler.TOKEN());
|
556
|
+
emit LogPoolServiceFeesWithdrawn(bundleNftId, bundleOwner, token, withdrawnAmount);
|
557
|
+
|
558
|
+
tokenHandler.pushToken(bundleOwner, withdrawnAmount);
|
559
|
+
}
|
417
560
|
}
|
418
561
|
|
419
562
|
|
@@ -421,7 +564,6 @@ contract PoolService is
|
|
421
564
|
/// may only be called by the policy service for unlocked pool components
|
422
565
|
function releaseCollateral(
|
423
566
|
IInstance instance,
|
424
|
-
address token,
|
425
567
|
NftId policyNftId,
|
426
568
|
IPolicy.PolicyInfo memory policyInfo
|
427
569
|
)
|
@@ -429,112 +571,43 @@ contract PoolService is
|
|
429
571
|
virtual
|
430
572
|
restricted()
|
431
573
|
{
|
574
|
+
_checkNftType(policyNftId, POLICY());
|
575
|
+
|
432
576
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
433
577
|
|
434
578
|
_bundleService.releaseCollateral(
|
435
|
-
instance,
|
579
|
+
instance.getInstanceStore(),
|
436
580
|
policyNftId,
|
437
581
|
policyInfo.bundleNftId,
|
438
582
|
remainingCollateralAmount);
|
439
583
|
|
440
|
-
_bundleService.unlinkPolicy(
|
441
|
-
instance,
|
442
|
-
policyNftId);
|
443
|
-
|
444
584
|
// update value locked with staking service
|
585
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
445
586
|
_staking.decreaseTotalValueLocked(
|
446
|
-
|
447
|
-
|
587
|
+
instanceReader.getInstanceNftId(),
|
588
|
+
address(instanceReader.getToken(policyInfo.productNftId)),
|
448
589
|
remainingCollateralAmount);
|
449
|
-
}
|
450
|
-
|
451
|
-
|
452
|
-
function calculateRequiredCollateral(
|
453
|
-
InstanceReader instanceReader,
|
454
|
-
NftId productNftId,
|
455
|
-
Amount sumInsuredAmount
|
456
|
-
)
|
457
|
-
public
|
458
|
-
view
|
459
|
-
returns(
|
460
|
-
Amount localCollateralAmount,
|
461
|
-
Amount totalCollateralAmount
|
462
|
-
)
|
463
|
-
{
|
464
|
-
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
465
|
-
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
466
590
|
|
467
|
-
(
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
poolInfo.collateralizationLevel,
|
472
|
-
poolInfo.retentionLevel,
|
473
|
-
sumInsuredAmount);
|
474
|
-
}
|
475
|
-
|
476
|
-
|
477
|
-
function calculateRequiredCollateral(
|
478
|
-
UFixed collateralizationLevel,
|
479
|
-
UFixed retentionLevel,
|
480
|
-
Amount sumInsuredAmount
|
481
|
-
)
|
482
|
-
public
|
483
|
-
pure
|
484
|
-
returns(
|
485
|
-
Amount localCollateralAmount,
|
486
|
-
Amount totalCollateralAmount
|
487
|
-
)
|
488
|
-
{
|
489
|
-
// TODO define if only applies to local collateral
|
490
|
-
// TODO add minimalistic implementation
|
491
|
-
|
492
|
-
// assumptions
|
493
|
-
// - collateralizationLevel == 1.0
|
494
|
-
// - retentionLevel == 1.0
|
495
|
-
localCollateralAmount = sumInsuredAmount;
|
496
|
-
totalCollateralAmount = localCollateralAmount;
|
591
|
+
emit LogPoolServiceCollateralReleased(
|
592
|
+
policyInfo.bundleNftId,
|
593
|
+
policyNftId,
|
594
|
+
remainingCollateralAmount);
|
497
595
|
}
|
498
596
|
|
499
597
|
|
500
|
-
function
|
501
|
-
Fee memory stakingFee,
|
502
|
-
Amount stakingAmount
|
503
|
-
)
|
598
|
+
function _getAndVerifyActivePool()
|
504
599
|
internal
|
505
|
-
|
600
|
+
virtual
|
601
|
+
view
|
602
|
+
returns (
|
603
|
+
NftId poolNftId,
|
604
|
+
IInstance instance
|
605
|
+
)
|
506
606
|
{
|
507
|
-
|
508
|
-
|
509
|
-
// check if any staking fees apply
|
510
|
-
if (FeeLib.gtz(stakingFee)) {
|
511
|
-
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
512
|
-
stakingNetAmount = netAmount;
|
513
|
-
|
514
|
-
// TODO update fee balance for pool
|
515
|
-
}
|
607
|
+
return PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
|
516
608
|
}
|
517
609
|
|
518
610
|
|
519
|
-
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
520
|
-
function _collectStakingAmount(
|
521
|
-
InstanceReader instanceReader,
|
522
|
-
NftId poolNftId,
|
523
|
-
address bundleOwner,
|
524
|
-
Amount amount
|
525
|
-
)
|
526
|
-
internal
|
527
|
-
{
|
528
|
-
|
529
|
-
// collecting investor token
|
530
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
531
|
-
address poolWallet = componentInfo.wallet;
|
532
|
-
componentInfo.tokenHandler.collectTokens(
|
533
|
-
bundleOwner,
|
534
|
-
poolWallet,
|
535
|
-
amount);
|
536
|
-
}
|
537
|
-
|
538
611
|
function _getDomain() internal pure override returns(ObjectType) {
|
539
612
|
return POOL();
|
540
613
|
}
|