@etherisc/gif-next 0.0.2-ba07940-332 → 0.0.2-ba4eef0-232
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +449 -248
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -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 +222 -21
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +348 -184
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +100 -13
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +92 -285
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +207 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +44 -162
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +309 -168
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +89 -51
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +31 -131
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +177 -67
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +93 -139
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +188 -46
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +247 -287
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +207 -33
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +161 -244
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +76 -155
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -131
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +288 -226
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -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 +184 -22
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +112 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +221 -39
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +700 -317
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +201 -46
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +619 -219
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +138 -85
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -34
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +421 -371
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +66 -167
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +189 -35
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +36 -71
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +50 -103
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +49 -102
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +188 -46
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +36 -95
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +163 -226
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +49 -126
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -363
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +165 -57
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +54 -24
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +155 -193
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +207 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +103 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +142 -162
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +120 -76
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +155 -193
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +143 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -24
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +556 -424
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +324 -54
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +49 -88
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +228 -440
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +65 -63
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +509 -4
- 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 +36 -57
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +123 -262
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -71
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +49 -102
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +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 +116 -90
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +127 -3
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +193 -193
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +61 -45
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +30 -57
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +180 -49
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +50 -24
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +143 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +33 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +300 -192
- package/contracts/authorization/AccessAdminLib.sol +183 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +307 -231
- package/contracts/authorization/IAccessAdmin.sol +69 -36
- package/contracts/authorization/IAuthorization.sol +21 -1
- package/contracts/distribution/BasicDistribution.sol +18 -16
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +36 -77
- package/contracts/distribution/DistributionService.sol +84 -53
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +0 -9
- package/contracts/distribution/IDistributionService.sol +22 -20
- package/contracts/examples/fire/FirePool.sol +10 -11
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +16 -11
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +26 -5
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +36 -8
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +56 -17
- package/contracts/instance/IInstanceService.sol +22 -10
- package/contracts/instance/Instance.sol +93 -29
- package/contracts/instance/InstanceAdmin.sol +279 -106
- package/contracts/instance/InstanceAuthorizationV3.sol +87 -46
- package/contracts/instance/InstanceReader.sol +187 -32
- package/contracts/instance/InstanceService.sol +167 -115
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +3 -4
- package/contracts/instance/module/IDistribution.sol +5 -2
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +1 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -3
- package/contracts/oracle/OracleService.sol +92 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +19 -2
- package/contracts/pool/BasicPoolAuthorization.sol +22 -14
- package/contracts/pool/BundleService.sol +88 -154
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -5
- package/contracts/pool/IPoolService.sol +58 -62
- package/contracts/pool/Pool.sol +95 -81
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +418 -211
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +39 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +2 -2
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +177 -136
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +8 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +7 -7
- package/contracts/product/PolicyService.sol +244 -263
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +32 -20
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +59 -23
- package/contracts/product/RiskService.sol +89 -31
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +10 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +16 -3
- package/contracts/registry/RegistryAdmin.sol +145 -335
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +253 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +150 -134
- package/contracts/registry/ServiceAuthorizationV3.sol +177 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +52 -107
- package/contracts/shared/ComponentService.sol +264 -291
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +16 -14
- package/contracts/shared/ContractLib.sol +246 -3
- package/contracts/shared/IComponent.sol +1 -17
- package/contracts/shared/IComponentService.sol +18 -26
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +4 -22
- package/contracts/shared/NftOwnable.sol +10 -6
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +41 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +275 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +17 -10
- package/contracts/staking/IStakingService.sol +16 -1
- package/contracts/staking/Staking.sol +95 -46
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
- package/contracts/staking/StakingReader.sol +6 -16
- package/contracts/staking/StakingService.sol +85 -14
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/staking/StakingStore.sol +2 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +53 -35
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +24 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +4 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
@@ -1,40 +1,42 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
4
5
|
import {IBundle} from "../instance/module/IBundle.sol";
|
5
6
|
import {IBundleService} from "./IBundleService.sol";
|
6
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
8
|
import {IComponentService} from "../shared/IComponentService.sol";
|
8
9
|
import {IInstance} from "../instance/IInstance.sol";
|
9
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
10
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
11
12
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
12
13
|
import {IPoolService} from "./IPoolService.sol";
|
13
14
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
14
15
|
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
16
16
|
import {IStaking} from "../staking/IStaking.sol";
|
17
17
|
|
18
18
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
19
19
|
import {ClaimId} from "../type/ClaimId.sol";
|
20
|
-
import {
|
21
|
-
import {NftId} from "../type/NftId.sol";
|
22
|
-
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
23
|
-
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
24
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
25
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
26
|
-
import {Seconds} from "../type/Seconds.sol";
|
27
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
28
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
20
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
29
21
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
30
22
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
23
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
24
|
+
import {NftId} from "../type/NftId.sol";
|
25
|
+
import {ObjectType, ACCOUNTING, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
26
|
+
import {PayoutId} from "../type/PayoutId.sol";
|
27
|
+
import {PoolLib} from "./PoolLib.sol";
|
28
|
+
import {Service} from "../shared/Service.sol";
|
29
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
30
|
+
import {UFixed} from "../type/UFixed.sol";
|
31
31
|
|
32
32
|
string constant POOL_SERVICE_NAME = "PoolService";
|
33
33
|
|
34
|
+
|
34
35
|
contract PoolService is
|
35
|
-
|
36
|
+
Service,
|
36
37
|
IPoolService
|
37
38
|
{
|
39
|
+
IAccountingService private _accountingService;
|
38
40
|
IBundleService internal _bundleService;
|
39
41
|
IComponentService internal _componentService;
|
40
42
|
IStaking private _staking;
|
@@ -48,12 +50,13 @@ contract PoolService is
|
|
48
50
|
initializer()
|
49
51
|
{
|
50
52
|
(
|
51
|
-
address
|
52
|
-
address
|
53
|
+
address authority,
|
54
|
+
address registry
|
53
55
|
) = abi.decode(data, (address, address));
|
54
56
|
|
55
|
-
|
57
|
+
__Service_init(authority, registry, owner);
|
56
58
|
|
59
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
57
60
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
58
61
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
59
62
|
_staking = IStaking(getRegistry().getStakingAddress());
|
@@ -67,7 +70,7 @@ contract PoolService is
|
|
67
70
|
external
|
68
71
|
virtual
|
69
72
|
{
|
70
|
-
(NftId poolNftId
|
73
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
71
74
|
InstanceReader instanceReader = instance.getInstanceReader();
|
72
75
|
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
73
76
|
|
@@ -79,45 +82,20 @@ contract PoolService is
|
|
79
82
|
}
|
80
83
|
|
81
84
|
|
82
|
-
/// @inheritdoc IPoolService
|
83
|
-
function createBundle(
|
84
|
-
address bundleOwner, // initial bundle owner
|
85
|
-
Fee memory fee, // fees deducted from premium that go to bundle owner
|
86
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
87
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
88
|
-
)
|
89
|
-
external
|
90
|
-
virtual
|
91
|
-
returns(NftId bundleNftId)
|
92
|
-
{
|
93
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
94
|
-
|
95
|
-
// create the empty bundle
|
96
|
-
bundleNftId = _bundleService.create(
|
97
|
-
instance,
|
98
|
-
poolNftId,
|
99
|
-
bundleOwner,
|
100
|
-
fee,
|
101
|
-
AmountLib.zero(),
|
102
|
-
lifetime,
|
103
|
-
filter);
|
104
|
-
|
105
|
-
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
106
|
-
}
|
107
|
-
|
108
|
-
|
109
85
|
function closeBundle(NftId bundleNftId)
|
110
86
|
external
|
111
87
|
virtual
|
112
88
|
{
|
113
|
-
(
|
89
|
+
_checkNftType(bundleNftId, BUNDLE());
|
90
|
+
|
91
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
114
92
|
|
115
93
|
// TODO get performance fee for pool (#477)
|
116
94
|
|
117
95
|
// releasing collateral in bundle
|
118
96
|
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
119
97
|
|
120
|
-
|
98
|
+
_accountingService.decreasePoolBalance(
|
121
99
|
instance.getInstanceStore(),
|
122
100
|
poolNftId,
|
123
101
|
unstakedAmount + feeAmount,
|
@@ -127,8 +105,7 @@ contract PoolService is
|
|
127
105
|
|
128
106
|
if ((unstakedAmount + feeAmount).gtz()){
|
129
107
|
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
130
|
-
poolComponentInfo.tokenHandler.
|
131
|
-
poolComponentInfo.wallet,
|
108
|
+
poolComponentInfo.tokenHandler.pushToken(
|
132
109
|
getRegistry().ownerOf(bundleNftId),
|
133
110
|
unstakedAmount + feeAmount);
|
134
111
|
}
|
@@ -144,9 +121,11 @@ contract PoolService is
|
|
144
121
|
external
|
145
122
|
virtual
|
146
123
|
{
|
147
|
-
(
|
124
|
+
_checkNftType(policyNftId, POLICY());
|
125
|
+
|
126
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
148
127
|
InstanceReader instanceReader = instance.getInstanceReader();
|
149
|
-
NftId productNftId =
|
128
|
+
NftId productNftId = getRegistry().getParentNftId(poolNftId);
|
150
129
|
|
151
130
|
// check policy matches with calling pool
|
152
131
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -167,22 +146,47 @@ contract PoolService is
|
|
167
146
|
}
|
168
147
|
|
169
148
|
|
149
|
+
// function _checkAndGetPoolInfo(NftId bundleNftId)
|
150
|
+
// internal
|
151
|
+
// view
|
152
|
+
// returns (
|
153
|
+
// InstanceReader instanceReader,
|
154
|
+
// InstanceStore instanceStore,
|
155
|
+
// NftId instanceNftId,
|
156
|
+
// NftId poolNftId,
|
157
|
+
// IComponents.PoolInfo memory poolInfo
|
158
|
+
// )
|
159
|
+
// {
|
160
|
+
// _checkNftType(bundleNftId, BUNDLE());
|
161
|
+
|
162
|
+
// (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
163
|
+
// instanceReader = instance.getInstanceReader();
|
164
|
+
// instanceStore = instance.getInstanceStore();
|
165
|
+
// instanceNftId = instance.getNftId();
|
166
|
+
// poolInfo = instanceReader.getPoolInfo(poolNftId);
|
167
|
+
|
168
|
+
// if (getRegistry().getParentNftId(bundleNftId) != poolNftId) {
|
169
|
+
// revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
170
|
+
// }
|
171
|
+
// }
|
172
|
+
|
173
|
+
|
170
174
|
/// @inheritdoc IPoolService
|
171
175
|
function stake(NftId bundleNftId, Amount amount)
|
172
176
|
external
|
173
177
|
virtual
|
174
178
|
// TODO: restricted() (once #462 is done)
|
175
|
-
|
176
|
-
|
179
|
+
returns(
|
180
|
+
Amount netAmount
|
181
|
+
)
|
177
182
|
{
|
178
|
-
(
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
}
|
183
|
+
(
|
184
|
+
InstanceReader instanceReader,
|
185
|
+
InstanceStore instanceStore,
|
186
|
+
NftId instanceNftId,
|
187
|
+
NftId poolNftId,
|
188
|
+
IComponents.PoolInfo memory poolInfo
|
189
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
186
190
|
|
187
191
|
{
|
188
192
|
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
@@ -192,41 +196,41 @@ contract PoolService is
|
|
192
196
|
}
|
193
197
|
|
194
198
|
// calculate fees
|
195
|
-
IRegistry registry = getRegistry();
|
196
199
|
Amount feeAmount;
|
200
|
+
(
|
201
|
+
feeAmount,
|
202
|
+
netAmount
|
203
|
+
) = PoolLib.calculateStakingAmounts(
|
204
|
+
getRegistry(),
|
205
|
+
instanceReader,
|
206
|
+
poolNftId,
|
207
|
+
amount);
|
197
208
|
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
(
|
202
|
-
feeAmount,
|
203
|
-
netAmount
|
204
|
-
) = FeeLib.calculateFee(
|
205
|
-
stakingFee,
|
206
|
-
amount);
|
207
|
-
}
|
208
|
-
|
209
|
-
// do all the bookkeeping
|
210
|
-
_componentService.increasePoolBalance(
|
211
|
-
instance.getInstanceStore(),
|
209
|
+
// do all the book keeping
|
210
|
+
_accountingService.increasePoolBalance(
|
211
|
+
instanceStore,
|
212
212
|
poolNftId,
|
213
213
|
netAmount,
|
214
214
|
feeAmount);
|
215
215
|
|
216
|
-
_bundleService.stake(
|
216
|
+
_bundleService.stake(instanceReader, instanceStore, bundleNftId, netAmount);
|
217
217
|
|
218
|
-
|
219
|
-
address bundleOwner = registry.ownerOf(bundleNftId);
|
220
|
-
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
218
|
+
emit LogPoolServiceBundleStaked(instanceNftId, poolNftId, bundleNftId, amount, netAmount);
|
221
219
|
|
222
|
-
//
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
bundleOwner
|
227
|
-
|
220
|
+
// only collect staking amount when pool is not externally managed
|
221
|
+
if (!poolInfo.isExternallyManaged) {
|
222
|
+
|
223
|
+
// collect tokens from bundle owner
|
224
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
225
|
+
_pullStakingAmount(
|
226
|
+
instanceReader,
|
227
|
+
poolNftId,
|
228
|
+
bundleOwner,
|
229
|
+
amount);
|
230
|
+
}
|
228
231
|
}
|
229
232
|
|
233
|
+
|
230
234
|
/// @inheritdoc IPoolService
|
231
235
|
function unstake(NftId bundleNftId, Amount amount)
|
232
236
|
external
|
@@ -234,63 +238,100 @@ contract PoolService is
|
|
234
238
|
// TODO: restricted() (once #462 is done)
|
235
239
|
returns(Amount netAmount)
|
236
240
|
{
|
237
|
-
(
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
244
|
-
}
|
241
|
+
(
|
242
|
+
InstanceReader instanceReader,
|
243
|
+
InstanceStore instanceStore,
|
244
|
+
NftId instanceNftId,
|
245
|
+
NftId poolNftId,
|
246
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
245
247
|
|
246
248
|
// call bundle service for bookkeeping and additional checks
|
247
|
-
Amount unstakedAmount = _bundleService.unstake(
|
249
|
+
Amount unstakedAmount = _bundleService.unstake(instanceStore, bundleNftId, amount);
|
248
250
|
|
249
251
|
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
250
252
|
// if amount was max, this was set to the available amount
|
251
253
|
|
252
254
|
// TODO: handle performance fees (issue #477)
|
255
|
+
netAmount = unstakedAmount;
|
253
256
|
|
254
257
|
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
255
|
-
|
258
|
+
_accountingService.decreasePoolBalance(
|
256
259
|
instanceStore,
|
257
260
|
poolNftId,
|
258
261
|
unstakedAmount,
|
259
262
|
AmountLib.zero());
|
260
263
|
|
261
|
-
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
262
264
|
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
owner
|
269
|
-
|
270
|
-
|
271
|
-
|
265
|
+
emit LogPoolServiceBundleUnstaked(instanceNftId, poolNftId, bundleNftId, unstakedAmount, netAmount);
|
266
|
+
|
267
|
+
// only distribute staking amount when pool is not externally managed
|
268
|
+
if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
|
269
|
+
|
270
|
+
// transfer amount to bundle owner
|
271
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
272
|
+
_pushUnstakingAmount(
|
273
|
+
instanceReader,
|
274
|
+
poolNftId,
|
275
|
+
bundleOwner,
|
276
|
+
netAmount);
|
277
|
+
}
|
272
278
|
}
|
273
279
|
|
274
280
|
|
275
|
-
function fundPoolWallet(
|
281
|
+
function fundPoolWallet(Amount amount)
|
276
282
|
external
|
277
283
|
virtual
|
278
|
-
restricted()
|
284
|
+
// restricted()
|
279
285
|
{
|
280
|
-
|
281
|
-
|
286
|
+
(
|
287
|
+
NftId poolNftId,
|
288
|
+
IInstance instance
|
289
|
+
) = _getAndVerifyActivePool();
|
290
|
+
|
291
|
+
// check that pool is externally managed
|
292
|
+
InstanceReader reader = instance.getInstanceReader();
|
293
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
294
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
295
|
+
}
|
296
|
+
|
297
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
298
|
+
emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
|
299
|
+
|
300
|
+
_pullStakingAmount(
|
301
|
+
reader,
|
302
|
+
poolNftId,
|
303
|
+
poolOwner,
|
304
|
+
amount);
|
282
305
|
}
|
283
306
|
|
284
307
|
|
285
|
-
function defundPoolWallet(
|
308
|
+
function defundPoolWallet(Amount amount)
|
286
309
|
external
|
287
310
|
virtual
|
288
|
-
restricted()
|
311
|
+
// restricted()
|
289
312
|
{
|
290
|
-
|
291
|
-
|
313
|
+
(
|
314
|
+
NftId poolNftId,
|
315
|
+
IInstance instance
|
316
|
+
) = _getAndVerifyActivePool();
|
317
|
+
|
318
|
+
// check that pool is externally managed
|
319
|
+
InstanceReader reader = instance.getInstanceReader();
|
320
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
321
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
322
|
+
}
|
323
|
+
|
324
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
325
|
+
emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
|
326
|
+
|
327
|
+
_pushUnstakingAmount(
|
328
|
+
reader,
|
329
|
+
poolNftId,
|
330
|
+
poolOwner,
|
331
|
+
amount);
|
292
332
|
}
|
293
333
|
|
334
|
+
|
294
335
|
function processSale(
|
295
336
|
NftId bundleNftId,
|
296
337
|
IPolicy.PremiumInfo memory premium
|
@@ -298,27 +339,28 @@ contract PoolService is
|
|
298
339
|
external
|
299
340
|
virtual
|
300
341
|
restricted()
|
301
|
-
onlyNftOfType(bundleNftId, BUNDLE())
|
302
342
|
{
|
343
|
+
_checkNftType(bundleNftId, BUNDLE());
|
344
|
+
|
303
345
|
IRegistry registry = getRegistry();
|
304
|
-
|
305
|
-
|
306
|
-
IInstance instance =
|
346
|
+
NftId poolNftId = registry.getParentNftId(bundleNftId);
|
347
|
+
(, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
|
348
|
+
IInstance instance = IInstance(instanceAddress);
|
307
349
|
|
308
350
|
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
309
351
|
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
310
352
|
Amount bundleNetAmount = premium.netPremiumAmount;
|
311
353
|
|
312
354
|
InstanceStore instanceStore = instance.getInstanceStore();
|
313
|
-
|
355
|
+
_accountingService.increasePoolBalance(
|
314
356
|
instanceStore,
|
315
|
-
|
357
|
+
poolNftId,
|
316
358
|
bundleNetAmount + bundleFeeAmount,
|
317
359
|
poolFeeAmount);
|
318
360
|
|
319
|
-
|
361
|
+
_accountingService.increaseBundleBalanceForPool(
|
320
362
|
instanceStore,
|
321
|
-
|
363
|
+
bundleNftId,
|
322
364
|
bundleNetAmount,
|
323
365
|
bundleFeeAmount);
|
324
366
|
}
|
@@ -340,6 +382,10 @@ contract PoolService is
|
|
340
382
|
Amount localCollateralAmount
|
341
383
|
)
|
342
384
|
{
|
385
|
+
_checkNftType(productNftId, PRODUCT());
|
386
|
+
_checkNftType(applicationNftId, POLICY());
|
387
|
+
_checkNftType(bundleNftId, BUNDLE());
|
388
|
+
|
343
389
|
NftId poolNftId;
|
344
390
|
bool poolIsVerifyingApplications;
|
345
391
|
(
|
@@ -347,7 +393,7 @@ contract PoolService is
|
|
347
393
|
totalCollateralAmount,
|
348
394
|
localCollateralAmount,
|
349
395
|
poolIsVerifyingApplications
|
350
|
-
) = calculateRequiredCollateral(
|
396
|
+
) = PoolLib.calculateRequiredCollateral(
|
351
397
|
instance.getInstanceReader(),
|
352
398
|
productNftId,
|
353
399
|
sumInsuredAmount);
|
@@ -382,43 +428,153 @@ contract PoolService is
|
|
382
428
|
}
|
383
429
|
|
384
430
|
function processPayout(
|
385
|
-
|
386
|
-
|
431
|
+
InstanceReader instanceReader,
|
432
|
+
InstanceStore instanceStore,
|
433
|
+
NftId productNftId,
|
387
434
|
NftId policyNftId,
|
388
|
-
|
389
|
-
|
435
|
+
NftId bundleNftId,
|
436
|
+
PayoutId payoutId,
|
437
|
+
Amount payoutAmount,
|
438
|
+
address payoutBeneficiary
|
390
439
|
)
|
391
440
|
external
|
392
441
|
virtual
|
393
442
|
restricted()
|
394
443
|
{
|
395
|
-
|
396
|
-
|
397
|
-
|
444
|
+
// checks
|
445
|
+
_checkNftType(policyNftId, POLICY());
|
446
|
+
|
447
|
+
// effects
|
448
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
398
449
|
|
399
|
-
|
450
|
+
_accountingService.decreasePoolBalance(
|
400
451
|
instanceStore,
|
401
452
|
poolNftId,
|
402
453
|
payoutAmount,
|
403
454
|
AmountLib.zero());
|
404
455
|
|
405
|
-
|
456
|
+
_accountingService.decreaseBundleBalanceForPool(
|
406
457
|
instanceStore,
|
407
458
|
bundleNftId,
|
408
459
|
payoutAmount,
|
409
460
|
AmountLib.zero());
|
410
461
|
|
411
462
|
_bundleService.releaseCollateral(
|
412
|
-
|
463
|
+
instanceStore,
|
413
464
|
policyNftId,
|
414
|
-
|
465
|
+
bundleNftId,
|
415
466
|
payoutAmount);
|
416
467
|
|
417
468
|
// update value locked with staking service
|
469
|
+
TokenHandler poolTokenHandler = instanceReader.getTokenHandler(poolNftId);
|
470
|
+
|
418
471
|
_staking.decreaseTotalValueLocked(
|
419
|
-
|
420
|
-
|
472
|
+
instanceReader.getInstanceNftId(),
|
473
|
+
address(poolTokenHandler.TOKEN()),
|
421
474
|
payoutAmount);
|
475
|
+
|
476
|
+
// interactions
|
477
|
+
_transferTokenAndNotifyPolicyHolder(
|
478
|
+
instanceReader,
|
479
|
+
poolTokenHandler,
|
480
|
+
productNftId,
|
481
|
+
policyNftId,
|
482
|
+
payoutId,
|
483
|
+
payoutAmount,
|
484
|
+
payoutBeneficiary);
|
485
|
+
}
|
486
|
+
|
487
|
+
function _transferTokenAndNotifyPolicyHolder(
|
488
|
+
InstanceReader instanceReader,
|
489
|
+
TokenHandler poolTokenHandler,
|
490
|
+
NftId productNftId,
|
491
|
+
NftId policyNftId,
|
492
|
+
PayoutId payoutId,
|
493
|
+
Amount payoutAmount,
|
494
|
+
address payoutBeneficiary
|
495
|
+
)
|
496
|
+
internal
|
497
|
+
{
|
498
|
+
(
|
499
|
+
Amount netPayoutAmount,
|
500
|
+
Amount processingFeeAmount,
|
501
|
+
address beneficiary
|
502
|
+
) = PoolLib.calculatePayoutAmounts(
|
503
|
+
getRegistry(),
|
504
|
+
instanceReader,
|
505
|
+
productNftId,
|
506
|
+
policyNftId,
|
507
|
+
payoutAmount,
|
508
|
+
payoutBeneficiary);
|
509
|
+
|
510
|
+
// 1st token tx to payout to beneficiary
|
511
|
+
poolTokenHandler.pushToken(
|
512
|
+
beneficiary,
|
513
|
+
netPayoutAmount);
|
514
|
+
|
515
|
+
// 2nd token tx to transfer processing fees to product wallet
|
516
|
+
// if processingFeeAmount > 0
|
517
|
+
if (processingFeeAmount.gtz()) {
|
518
|
+
poolTokenHandler.pushToken(
|
519
|
+
instanceReader.getWallet(productNftId),
|
520
|
+
processingFeeAmount);
|
521
|
+
}
|
522
|
+
|
523
|
+
// callback to policy holder if applicable
|
524
|
+
_policyHolderPayoutExecuted(
|
525
|
+
policyNftId,
|
526
|
+
payoutId,
|
527
|
+
beneficiary,
|
528
|
+
netPayoutAmount);
|
529
|
+
}
|
530
|
+
|
531
|
+
|
532
|
+
/// @inheritdoc IPoolService
|
533
|
+
function withdrawBundleFees(
|
534
|
+
NftId bundleNftId,
|
535
|
+
Amount amount
|
536
|
+
)
|
537
|
+
public
|
538
|
+
virtual
|
539
|
+
restricted()
|
540
|
+
returns (Amount withdrawnAmount)
|
541
|
+
{
|
542
|
+
// checks
|
543
|
+
_checkNftType(bundleNftId, BUNDLE());
|
544
|
+
|
545
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
546
|
+
InstanceReader reader = instance.getInstanceReader();
|
547
|
+
|
548
|
+
// determine withdrawn amount
|
549
|
+
withdrawnAmount = amount;
|
550
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
551
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
552
|
+
} else {
|
553
|
+
if (withdrawnAmount > reader.getFeeAmount(bundleNftId)) {
|
554
|
+
revert ErrorPoolServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
555
|
+
}
|
556
|
+
}
|
557
|
+
|
558
|
+
// effects
|
559
|
+
// decrease fee counters by withdrawnAmount
|
560
|
+
{
|
561
|
+
InstanceStore store = instance.getInstanceStore();
|
562
|
+
// decrease fee amount of the bundle
|
563
|
+
_accountingService.decreaseBundleBalanceForPool(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
564
|
+
// decrease pool balance
|
565
|
+
_accountingService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
566
|
+
}
|
567
|
+
|
568
|
+
// interactions
|
569
|
+
// transfer amount to bundle owner
|
570
|
+
{
|
571
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
572
|
+
TokenHandler tokenHandler = reader.getTokenHandler(poolNftId);
|
573
|
+
address token = address(tokenHandler.TOKEN());
|
574
|
+
emit LogPoolServiceFeesWithdrawn(bundleNftId, bundleOwner, token, withdrawnAmount);
|
575
|
+
|
576
|
+
tokenHandler.pushToken(bundleOwner, withdrawnAmount);
|
577
|
+
}
|
422
578
|
}
|
423
579
|
|
424
580
|
|
@@ -426,7 +582,6 @@ contract PoolService is
|
|
426
582
|
/// may only be called by the policy service for unlocked pool components
|
427
583
|
function releaseCollateral(
|
428
584
|
IInstance instance,
|
429
|
-
address token,
|
430
585
|
NftId policyNftId,
|
431
586
|
IPolicy.PolicyInfo memory policyInfo
|
432
587
|
)
|
@@ -434,114 +589,166 @@ contract PoolService is
|
|
434
589
|
virtual
|
435
590
|
restricted()
|
436
591
|
{
|
592
|
+
_checkNftType(policyNftId, POLICY());
|
593
|
+
|
437
594
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
438
595
|
|
439
596
|
_bundleService.releaseCollateral(
|
440
|
-
instance,
|
597
|
+
instance.getInstanceStore(),
|
441
598
|
policyNftId,
|
442
599
|
policyInfo.bundleNftId,
|
443
600
|
remainingCollateralAmount);
|
444
601
|
|
445
|
-
_bundleService.unlinkPolicy(
|
446
|
-
instance,
|
447
|
-
policyNftId);
|
448
|
-
|
449
602
|
// update value locked with staking service
|
603
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
450
604
|
_staking.decreaseTotalValueLocked(
|
451
|
-
|
452
|
-
|
605
|
+
instanceReader.getInstanceNftId(),
|
606
|
+
address(instanceReader.getToken(policyInfo.productNftId)),
|
453
607
|
remainingCollateralAmount);
|
454
608
|
}
|
455
609
|
|
456
610
|
|
457
|
-
function calculateRequiredCollateral(
|
458
|
-
|
459
|
-
|
460
|
-
|
611
|
+
// function calculateRequiredCollateral(
|
612
|
+
// InstanceReader instanceReader,
|
613
|
+
// NftId productNftId,
|
614
|
+
// Amount sumInsuredAmount
|
615
|
+
// )
|
616
|
+
// public
|
617
|
+
// view
|
618
|
+
// returns(
|
619
|
+
// NftId poolNftId,
|
620
|
+
// Amount totalCollateralAmount,
|
621
|
+
// Amount localCollateralAmount,
|
622
|
+
// bool poolIsVerifyingApplications
|
623
|
+
// )
|
624
|
+
// {
|
625
|
+
// return CollateralLib.calculateRequiredCollateral(
|
626
|
+
// instanceReader,
|
627
|
+
// productNftId,
|
628
|
+
// sumInsuredAmount);
|
629
|
+
// }
|
630
|
+
|
631
|
+
// _checkNftType(productNftId, PRODUCT());
|
632
|
+
|
633
|
+
// poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
634
|
+
// IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
635
|
+
// poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
|
636
|
+
|
637
|
+
// (
|
638
|
+
// totalCollateralAmount,
|
639
|
+
// localCollateralAmount
|
640
|
+
// ) = calculateRequiredCollateral(
|
641
|
+
// poolInfo.collateralizationLevel,
|
642
|
+
// poolInfo.retentionLevel,
|
643
|
+
// sumInsuredAmount);
|
644
|
+
// }
|
645
|
+
|
646
|
+
|
647
|
+
// function calculateRequiredCollateral(
|
648
|
+
// UFixed collateralizationLevel,
|
649
|
+
// UFixed retentionLevel,
|
650
|
+
// Amount sumInsuredAmount
|
651
|
+
// )
|
652
|
+
// public
|
653
|
+
// pure
|
654
|
+
// returns(
|
655
|
+
// Amount totalCollateralAmount,
|
656
|
+
// Amount localCollateralAmount
|
657
|
+
// )
|
658
|
+
// {
|
659
|
+
// // collateralization is applied to sum insured
|
660
|
+
// UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
661
|
+
// totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
662
|
+
|
663
|
+
// // retention level defines how much capital is required locally
|
664
|
+
// localCollateralAmount = AmountLib.toAmount(
|
665
|
+
// (retentionLevel * totalUFixed).toInt());
|
666
|
+
// }
|
667
|
+
|
668
|
+
|
669
|
+
|
670
|
+
|
671
|
+
function _policyHolderPayoutExecuted(
|
672
|
+
NftId policyNftId,
|
673
|
+
PayoutId payoutId,
|
674
|
+
address beneficiary,
|
675
|
+
Amount payoutAmount
|
461
676
|
)
|
462
|
-
|
463
|
-
view
|
464
|
-
returns(
|
465
|
-
NftId poolNftId,
|
466
|
-
Amount totalCollateralAmount,
|
467
|
-
Amount localCollateralAmount,
|
468
|
-
bool poolIsVerifyingApplications
|
469
|
-
)
|
677
|
+
internal
|
470
678
|
{
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
(
|
476
|
-
totalCollateralAmount,
|
477
|
-
localCollateralAmount
|
478
|
-
) = calculateRequiredCollateral(
|
479
|
-
poolInfo.collateralizationLevel,
|
480
|
-
poolInfo.retentionLevel,
|
481
|
-
sumInsuredAmount);
|
679
|
+
IPolicyHolder policyHolder = PoolLib.getPolicyHolder(getRegistry(), policyNftId);
|
680
|
+
if(address(policyHolder) != address(0)) {
|
681
|
+
policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
|
682
|
+
}
|
482
683
|
}
|
483
684
|
|
484
685
|
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
686
|
+
/// @dev Transfers the specified amount from the "from account" to the pool's wallet
|
687
|
+
function _pullStakingAmount(
|
688
|
+
InstanceReader reader,
|
689
|
+
NftId poolNftId,
|
690
|
+
address from,
|
691
|
+
Amount amount
|
489
692
|
)
|
490
|
-
|
491
|
-
pure
|
492
|
-
returns(
|
493
|
-
Amount totalCollateralAmount,
|
494
|
-
Amount localCollateralAmount
|
495
|
-
)
|
693
|
+
internal
|
496
694
|
{
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
// retention level defines how much capital is required locally
|
502
|
-
localCollateralAmount = AmountLib.toAmount(
|
503
|
-
(retentionLevel * totalUFixed).toInt());
|
695
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
696
|
+
info.tokenHandler.pullToken(
|
697
|
+
from,
|
698
|
+
amount);
|
504
699
|
}
|
505
700
|
|
506
|
-
|
507
|
-
function
|
508
|
-
|
509
|
-
|
701
|
+
/// @dev Transfers the specified amount from the pool's wallet to the "to account"
|
702
|
+
function _pushUnstakingAmount(
|
703
|
+
InstanceReader reader,
|
704
|
+
NftId poolNftId,
|
705
|
+
address to,
|
706
|
+
Amount amount
|
510
707
|
)
|
511
708
|
internal
|
512
|
-
returns (Amount stakingNetAmount)
|
513
709
|
{
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
519
|
-
stakingNetAmount = netAmount;
|
520
|
-
|
521
|
-
// TODO update fee balance for pool
|
522
|
-
}
|
710
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
711
|
+
info.tokenHandler.pushToken(
|
712
|
+
to,
|
713
|
+
amount);
|
523
714
|
}
|
524
715
|
|
525
716
|
|
526
|
-
|
527
|
-
function _collectStakingAmount(
|
528
|
-
InstanceReader instanceReader,
|
529
|
-
NftId poolNftId,
|
530
|
-
address bundleOwner,
|
531
|
-
Amount amount
|
532
|
-
)
|
717
|
+
function _getAndVerifyActivePool()
|
533
718
|
internal
|
719
|
+
virtual
|
720
|
+
view
|
721
|
+
returns (
|
722
|
+
NftId poolNftId,
|
723
|
+
IInstance instance
|
724
|
+
)
|
534
725
|
{
|
535
|
-
|
536
|
-
// collecting investor token
|
537
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
538
|
-
address poolWallet = componentInfo.wallet;
|
539
|
-
componentInfo.tokenHandler.collectTokens(
|
540
|
-
bundleOwner,
|
541
|
-
poolWallet,
|
542
|
-
amount);
|
726
|
+
return PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
|
543
727
|
}
|
544
728
|
|
729
|
+
// function _getAndVerifyActivePool()
|
730
|
+
// internal
|
731
|
+
// virtual
|
732
|
+
// view
|
733
|
+
// returns (
|
734
|
+
// NftId poolNftId,
|
735
|
+
// IInstance instance
|
736
|
+
// )
|
737
|
+
// {
|
738
|
+
// (
|
739
|
+
// IRegistry.ObjectInfo memory info,
|
740
|
+
// address instanceAddress
|
741
|
+
// ) = ContractLib.getAndVerifyComponent(
|
742
|
+
// getRegistry(),
|
743
|
+
// msg.sender,
|
744
|
+
// POOL(),
|
745
|
+
// true); // only active pools
|
746
|
+
|
747
|
+
// poolNftId = info.nftId;
|
748
|
+
// instance = IInstance(instanceAddress);
|
749
|
+
// }
|
750
|
+
|
751
|
+
|
545
752
|
function _getDomain() internal pure override returns(ObjectType) {
|
546
753
|
return POOL();
|
547
754
|
}
|