@etherisc/gif-next 0.0.2-d437d8d-974 → 0.0.2-d43ca2d-657
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 +166 -59
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
- 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 +97 -18
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +192 -212
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +132 -128
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +196 -95
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +142 -69
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +119 -110
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -2
- 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 +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2025 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +232 -164
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +175 -151
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +321 -183
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +632 -231
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +130 -61
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +182 -85
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +312 -135
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +525 -84
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +134 -157
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +110 -49
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +207 -116
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -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 +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- 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 +151 -171
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- 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 +113 -104
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +127 -123
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +156 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +130 -45
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +146 -142
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +161 -156
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +124 -75
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +74 -35
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +133 -135
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +298 -187
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +146 -153
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +421 -264
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +146 -49
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +135 -54
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +106 -45
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +186 -136
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +328 -131
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +146 -69
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +206 -10
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +154 -21
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +172 -117
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +264 -130
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +140 -63
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +185 -115
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +123 -54
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +182 -132
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +117 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +115 -42
- 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 +98 -17
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- 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 +142 -53
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +257 -254
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +112 -183
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +102 -37
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -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 +406 -250
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +3 -3
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +105 -83
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +493 -480
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +139 -76
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +60 -2
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -65
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +448 -260
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +113 -104
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- 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 +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -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 +55 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +126 -122
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- 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 +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +3 -3
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
- 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 +60 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -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 +110 -101
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +55 -23
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +192 -171
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +127 -53
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +103 -62
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +106 -41
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +145 -104
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +3 -3
- 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 +33 -9
- 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 +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 +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +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 +118 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
- 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/SelectorSetLib.dbg.json +1 -1
- 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/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 +16 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +79 -27
- 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 +195 -128
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +111 -39
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +10 -5
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +8 -7
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +32 -40
- package/contracts/distribution/DistributionService.sol +86 -65
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +436 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -6
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +38 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +38 -34
- package/contracts/instance/IInstance.sol +12 -9
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +40 -34
- package/contracts/instance/InstanceAdmin.sol +114 -73
- package/contracts/instance/InstanceAuthorizationV3.sol +51 -32
- package/contracts/instance/InstanceReader.sol +171 -20
- package/contracts/instance/InstanceService.sol +86 -149
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/RiskSet.sol +117 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +2 -1
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IComponents.sol +10 -6
- package/contracts/instance/module/IPolicy.sol +4 -3
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +110 -80
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +12 -2
- package/contracts/pool/BundleService.sol +74 -87
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +2 -15
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +30 -37
- package/contracts/pool/Pool.sol +141 -122
- package/contracts/pool/PoolService.sol +265 -159
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +32 -21
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +1 -3
- package/contracts/product/ClaimService.sol +298 -127
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +16 -2
- package/contracts/product/IPolicyService.sol +25 -10
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +23 -3
- package/contracts/product/PolicyService.sol +296 -198
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +14 -14
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +100 -74
- package/contracts/product/RiskService.sol +79 -25
- package/contracts/product/RiskServiceManager.sol +4 -4
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +14 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +32 -8
- package/contracts/registry/RegistryAdmin.sol +121 -241
- package/contracts/registry/RegistryService.sol +36 -47
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +257 -237
- package/contracts/registry/ServiceAuthorizationV3.sol +93 -50
- package/contracts/registry/TokenRegistry.sol +5 -7
- package/contracts/shared/Component.sol +67 -109
- package/contracts/shared/ComponentService.sol +381 -332
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +27 -16
- package/contracts/shared/ContractLib.sol +223 -9
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +45 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +68 -43
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +5 -1
- package/contracts/shared/Registerable.sol +53 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +13 -30
- package/contracts/shared/TokenHandler.sol +316 -66
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +9 -4
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/Staking.sol +64 -36
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +56 -24
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- 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 +11 -0
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +35 -4
- package/contracts/type/RoleId.sol +4 -13
- package/contracts/type/StateId.sol +14 -1
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +13 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +4 -3
- 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/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- 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/shared/InitializableCustom.sol +0 -177
@@ -1,31 +1,37 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IClaimService} from "./IClaimService.sol";
|
4
5
|
import {IComponents} from "../instance/module/IComponents.sol";
|
5
6
|
import {IInstance} from "../instance/IInstance.sol";
|
6
7
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
8
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
9
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
10
|
+
import {IPolicyService} from "../product/IPolicyService.sol";
|
11
|
+
import {IPoolService} from "../pool/IPoolService.sol";
|
12
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
13
|
+
|
7
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
8
|
-
import {TimestampLib} from "../type/Timestamp.sol";
|
9
|
-
import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
|
10
|
-
import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
|
11
|
-
import {NftId} from "../type/NftId.sol";
|
12
|
-
import {FeeLib} from "../type/Fee.sol";
|
13
|
-
import {StateId} from "../type/StateId.sol";
|
14
15
|
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
15
|
-
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
16
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
17
16
|
import {ContractLib} from "../shared/ContractLib.sol";
|
17
|
+
import {FeeLib} from "../type/Fee.sol";
|
18
18
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
19
|
-
import {
|
20
|
-
import {
|
21
|
-
import {
|
19
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
20
|
+
import {NftId} from "../type/NftId.sol";
|
21
|
+
import {ObjectType, COMPONENT, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
|
22
|
+
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
23
|
+
import {Service} from "../shared/Service.sol";
|
24
|
+
import {StateId} from "../type/StateId.sol";
|
25
|
+
import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CANCELLED, CONFIRMED, CLOSED, EXPECTED, PAID} from "../type/StateId.sol";
|
26
|
+
import {TimestampLib} from "../type/Timestamp.sol";
|
22
27
|
|
23
28
|
|
24
29
|
contract ClaimService is
|
25
|
-
|
30
|
+
Service,
|
26
31
|
IClaimService
|
27
32
|
{
|
28
33
|
|
34
|
+
IPolicyService internal _policyService;
|
29
35
|
IPoolService internal _poolService;
|
30
36
|
|
31
37
|
function _initialize(
|
@@ -37,13 +43,13 @@ contract ClaimService is
|
|
37
43
|
initializer()
|
38
44
|
{
|
39
45
|
(
|
40
|
-
address
|
41
|
-
|
42
|
-
|
43
|
-
) = abi.decode(data, (address, address, address));
|
46
|
+
address authority,
|
47
|
+
address registry
|
48
|
+
) = abi.decode(data, (address, address));
|
44
49
|
|
45
|
-
|
50
|
+
__Service_init(authority, registry, owner);
|
46
51
|
|
52
|
+
_policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
|
47
53
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
48
54
|
|
49
55
|
_registerInterface(type(IClaimService).interfaceId);
|
@@ -56,11 +62,15 @@ contract ClaimService is
|
|
56
62
|
)
|
57
63
|
external
|
58
64
|
virtual
|
65
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
66
|
+
restricted()
|
59
67
|
returns (ClaimId claimId)
|
60
68
|
{
|
69
|
+
// checks
|
61
70
|
(
|
62
|
-
|
63
|
-
|
71
|
+
,
|
72
|
+
IInstance instance,,
|
73
|
+
InstanceStore instanceStore,
|
64
74
|
IPolicy.PolicyInfo memory policyInfo
|
65
75
|
) = _verifyCallerWithPolicy(policyNftId);
|
66
76
|
|
@@ -69,18 +79,12 @@ contract ClaimService is
|
|
69
79
|
revert ErrorClaimServicePolicyNotOpen(policyNftId);
|
70
80
|
}
|
71
81
|
|
72
|
-
|
73
|
-
// check policy including this claim is still within sum insured
|
74
|
-
if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
|
75
|
-
revert ErrorClaimServiceClaimExceedsSumInsured(
|
76
|
-
policyNftId,
|
77
|
-
policyInfo.sumInsuredAmount,
|
78
|
-
AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
|
79
|
-
}
|
82
|
+
_checkClaimAmount(policyNftId, policyInfo, claimAmount);
|
80
83
|
|
84
|
+
// effects
|
81
85
|
// create new claim
|
82
86
|
claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
|
83
|
-
|
87
|
+
instanceStore.createClaim(
|
84
88
|
policyNftId,
|
85
89
|
claimId,
|
86
90
|
IPolicy.ClaimInfo({
|
@@ -93,10 +97,10 @@ contract ClaimService is
|
|
93
97
|
closedAt: TimestampLib.zero()}));
|
94
98
|
|
95
99
|
// update and save policy info with instance
|
100
|
+
// policy claim amount is only updated when claim is confirmed
|
96
101
|
policyInfo.claimsCount += 1;
|
97
102
|
policyInfo.openClaimsCount += 1;
|
98
|
-
|
99
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
103
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
100
104
|
|
101
105
|
emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
|
102
106
|
}
|
@@ -110,30 +114,43 @@ contract ClaimService is
|
|
110
114
|
)
|
111
115
|
external
|
112
116
|
virtual
|
117
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
113
118
|
{
|
119
|
+
// checks
|
120
|
+
_checkNftType(policyNftId, POLICY());
|
121
|
+
|
114
122
|
(
|
123
|
+
NftId productNftId,
|
115
124
|
IInstance instance,
|
116
125
|
InstanceReader instanceReader,
|
126
|
+
InstanceStore instanceStore,
|
117
127
|
IPolicy.PolicyInfo memory policyInfo
|
118
128
|
) = _verifyCallerWithPolicy(policyNftId);
|
119
129
|
|
120
|
-
|
130
|
+
_checkClaimAmount(policyNftId, policyInfo, confirmedAmount);
|
121
131
|
|
132
|
+
// effects
|
122
133
|
// check/update claim info
|
123
134
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
124
135
|
claimInfo.claimAmount = confirmedAmount;
|
125
136
|
claimInfo.processData = data;
|
126
|
-
|
127
|
-
|
128
|
-
// TODO test if claim results in total claim amount == sum insured amount
|
129
|
-
// should policy still be active it needs to automatically become expired
|
137
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
|
130
138
|
|
131
139
|
// update and save policy info with instance
|
132
140
|
policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
|
133
|
-
|
141
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
142
|
+
|
143
|
+
// should policy still be active it needs to become expired
|
144
|
+
if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
|
145
|
+
_policyService.expirePolicy(instance, policyNftId, TimestampLib.blockTimestamp());
|
146
|
+
}
|
134
147
|
|
135
148
|
emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
136
149
|
|
150
|
+
// interactions
|
151
|
+
// callback to pool if applicable
|
152
|
+
_processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
|
153
|
+
|
137
154
|
// callback to policy holder if applicable
|
138
155
|
_policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
139
156
|
}
|
@@ -146,10 +163,15 @@ contract ClaimService is
|
|
146
163
|
)
|
147
164
|
external
|
148
165
|
virtual
|
166
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
149
167
|
{
|
168
|
+
_checkNftType(policyNftId, POLICY());
|
169
|
+
|
150
170
|
(
|
171
|
+
,
|
151
172
|
IInstance instance,
|
152
173
|
InstanceReader instanceReader,
|
174
|
+
InstanceStore instanceStore,
|
153
175
|
IPolicy.PolicyInfo memory policyInfo
|
154
176
|
) = _verifyCallerWithPolicy(policyNftId);
|
155
177
|
|
@@ -157,38 +179,40 @@ contract ClaimService is
|
|
157
179
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
158
180
|
claimInfo.processData = data;
|
159
181
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
160
|
-
|
182
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
|
161
183
|
|
162
184
|
// update and save policy info with instance
|
163
185
|
policyInfo.openClaimsCount -= 1;
|
164
|
-
|
186
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
165
187
|
|
166
188
|
emit LogClaimServiceClaimDeclined(policyNftId, claimId);
|
167
189
|
}
|
168
190
|
|
169
191
|
|
170
|
-
// TODO add test case
|
171
192
|
function revoke(
|
172
193
|
NftId policyNftId,
|
173
194
|
ClaimId claimId
|
174
195
|
)
|
175
196
|
external
|
176
197
|
virtual
|
177
|
-
|
198
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
199
|
+
{
|
178
200
|
(
|
201
|
+
,
|
179
202
|
IInstance instance,
|
180
203
|
InstanceReader instanceReader,
|
204
|
+
InstanceStore instanceStore,
|
181
205
|
IPolicy.PolicyInfo memory policyInfo
|
182
206
|
) = _verifyCallerWithPolicy(policyNftId);
|
183
207
|
|
184
208
|
// check/update claim info
|
185
209
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
186
210
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
187
|
-
|
211
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
|
188
212
|
|
189
213
|
// update and save policy info with instance
|
190
214
|
policyInfo.openClaimsCount -= 1;
|
191
|
-
|
215
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
192
216
|
|
193
217
|
emit LogClaimServiceClaimRevoked(policyNftId, claimId);
|
194
218
|
}
|
@@ -200,10 +224,15 @@ contract ClaimService is
|
|
200
224
|
)
|
201
225
|
external
|
202
226
|
virtual
|
227
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
203
228
|
{
|
229
|
+
_checkNftType(policyNftId, POLICY());
|
230
|
+
|
204
231
|
(
|
232
|
+
,
|
205
233
|
IInstance instance,
|
206
234
|
InstanceReader instanceReader,
|
235
|
+
InstanceStore instanceStore,
|
207
236
|
IPolicy.PolicyInfo memory policyInfo
|
208
237
|
) = _verifyCallerWithPolicy(policyNftId);
|
209
238
|
|
@@ -228,10 +257,10 @@ contract ClaimService is
|
|
228
257
|
}
|
229
258
|
|
230
259
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
231
|
-
|
260
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
232
261
|
}
|
233
262
|
|
234
|
-
|
263
|
+
|
235
264
|
function createPayoutForBeneficiary(
|
236
265
|
NftId policyNftId,
|
237
266
|
ClaimId claimId,
|
@@ -241,6 +270,7 @@ contract ClaimService is
|
|
241
270
|
)
|
242
271
|
external
|
243
272
|
virtual
|
273
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
244
274
|
returns (PayoutId payoutId)
|
245
275
|
{
|
246
276
|
if (beneficiary == address(0)) {
|
@@ -264,8 +294,11 @@ contract ClaimService is
|
|
264
294
|
)
|
265
295
|
external
|
266
296
|
virtual
|
297
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
267
298
|
returns (PayoutId payoutId)
|
268
299
|
{
|
300
|
+
_checkNftType(policyNftId, POLICY());
|
301
|
+
|
269
302
|
return _createPayout(
|
270
303
|
policyNftId,
|
271
304
|
claimId,
|
@@ -274,132 +307,230 @@ contract ClaimService is
|
|
274
307
|
data);
|
275
308
|
}
|
276
309
|
|
277
|
-
|
310
|
+
|
311
|
+
function processPayout(
|
278
312
|
NftId policyNftId,
|
279
|
-
|
280
|
-
Amount amount,
|
281
|
-
address beneficiary,
|
282
|
-
bytes memory data
|
313
|
+
PayoutId payoutId
|
283
314
|
)
|
284
|
-
|
315
|
+
external
|
285
316
|
virtual
|
286
|
-
|
317
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
287
318
|
{
|
319
|
+
// checks
|
288
320
|
(
|
321
|
+
,
|
289
322
|
IInstance instance,
|
290
323
|
InstanceReader instanceReader,
|
324
|
+
InstanceStore instanceStore,
|
291
325
|
IPolicy.PolicyInfo memory policyInfo
|
292
326
|
) = _verifyCallerWithPolicy(policyNftId);
|
293
327
|
|
294
|
-
|
295
|
-
|
328
|
+
// check that payout exists and is open
|
329
|
+
IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
|
330
|
+
StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
|
331
|
+
if(payoutState != EXPECTED()) {
|
332
|
+
revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
|
333
|
+
}
|
296
334
|
|
297
|
-
//
|
298
|
-
|
299
|
-
|
335
|
+
// check that payout amount does not violate claim amount
|
336
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, payoutId.toClaimId());
|
337
|
+
if(claimInfo.paidAmount + payoutInfo.amount > claimInfo.claimAmount) {
|
338
|
+
revert ErrorClaimServicePayoutExceedsClaimAmount(
|
339
|
+
policyNftId,
|
340
|
+
payoutId.toClaimId(),
|
341
|
+
claimInfo.claimAmount,
|
342
|
+
claimInfo.paidAmount + payoutInfo.amount);
|
343
|
+
}
|
300
344
|
|
301
|
-
//
|
302
|
-
//
|
303
|
-
|
304
|
-
payoutId
|
305
|
-
instance.getInstanceStore().createPayout(
|
306
|
-
policyNftId,
|
307
|
-
payoutId,
|
308
|
-
IPolicy.PayoutInfo({
|
309
|
-
claimId: payoutId.toClaimId(),
|
310
|
-
amount: amount,
|
311
|
-
beneficiary: beneficiary,
|
312
|
-
data: data,
|
313
|
-
paidAt: TimestampLib.zero()}));
|
345
|
+
// effects
|
346
|
+
// update and save payout info with instance
|
347
|
+
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
348
|
+
instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
314
349
|
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
350
|
+
Amount payoutAmount = payoutInfo.amount;
|
351
|
+
|
352
|
+
{
|
353
|
+
ClaimId claimId = payoutId.toClaimId();
|
354
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
355
|
+
claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
|
356
|
+
claimInfo.openPayoutsCount -= 1;
|
357
|
+
|
358
|
+
// check if this payout is closing the linked claim
|
359
|
+
// update claim and policy info accordingly
|
360
|
+
if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
|
361
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
362
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
363
|
+
|
364
|
+
policyInfo.openClaimsCount -= 1;
|
365
|
+
} else {
|
366
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
367
|
+
}
|
368
|
+
}
|
319
369
|
|
320
370
|
// update and save policy info with instance
|
321
|
-
policyInfo.payoutAmount.
|
322
|
-
|
371
|
+
policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
|
372
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
323
373
|
|
324
|
-
|
325
|
-
|
374
|
+
// inform pool about payout
|
375
|
+
_poolService.processPayout(
|
376
|
+
instance,
|
377
|
+
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
378
|
+
policyNftId,
|
379
|
+
policyInfo,
|
380
|
+
payoutAmount);
|
381
|
+
|
382
|
+
// transfer payout token and fee
|
383
|
+
{
|
384
|
+
(
|
385
|
+
Amount netPayoutAmount,
|
386
|
+
Amount processingFeeAmount,
|
387
|
+
address beneficiary
|
388
|
+
) = _calculatePayoutAmount(
|
389
|
+
instanceReader,
|
390
|
+
policyNftId,
|
391
|
+
policyInfo,
|
392
|
+
payoutInfo);
|
393
|
+
|
394
|
+
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
|
395
|
+
|
396
|
+
{
|
397
|
+
NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
|
398
|
+
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
399
|
+
poolInfo.tokenHandler.pushToken(
|
400
|
+
beneficiary,
|
401
|
+
netPayoutAmount);
|
402
|
+
|
403
|
+
// TODO add 2nd token tx if processingFeeAmount > 0
|
404
|
+
}
|
326
405
|
|
406
|
+
// callback to policy holder if applicable
|
407
|
+
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
408
|
+
}
|
409
|
+
}
|
327
410
|
|
328
|
-
function
|
411
|
+
function cancelPayout(
|
329
412
|
NftId policyNftId,
|
330
413
|
PayoutId payoutId
|
331
414
|
)
|
332
415
|
external
|
333
416
|
virtual
|
334
417
|
{
|
418
|
+
// checks
|
335
419
|
(
|
420
|
+
,
|
336
421
|
IInstance instance,
|
337
422
|
InstanceReader instanceReader,
|
423
|
+
InstanceStore instanceStore,
|
338
424
|
IPolicy.PolicyInfo memory policyInfo
|
339
425
|
) = _verifyCallerWithPolicy(policyNftId);
|
340
426
|
|
341
|
-
|
342
|
-
|
427
|
+
StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
|
428
|
+
if (payoutState != EXPECTED()) {
|
429
|
+
revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
|
430
|
+
}
|
343
431
|
|
432
|
+
// effects
|
344
433
|
// update and save payout info with instance
|
345
|
-
|
346
|
-
instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
434
|
+
instanceStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
|
347
435
|
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
claimInfo.openPayoutsCount -= 1;
|
354
|
-
|
355
|
-
// check if this payout is closing the linked claim
|
356
|
-
// update claim and policy info accordingly
|
357
|
-
if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
|
358
|
-
claimInfo.closedAt == TimestampLib.blockTimestamp();
|
359
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
360
|
-
|
361
|
-
policyInfo.openClaimsCount -= 1;
|
362
|
-
} else {
|
363
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
436
|
+
{
|
437
|
+
ClaimId claimId = payoutId.toClaimId();
|
438
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
439
|
+
claimInfo.openPayoutsCount -= 1;
|
440
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
364
441
|
}
|
365
442
|
|
366
|
-
|
367
|
-
|
368
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
443
|
+
emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
|
444
|
+
}
|
369
445
|
|
370
|
-
|
371
|
-
_poolService.reduceCollateral(
|
372
|
-
instance,
|
373
|
-
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
374
|
-
policyNftId,
|
375
|
-
policyInfo,
|
376
|
-
payoutAmount);
|
446
|
+
// internal functions
|
377
447
|
|
378
|
-
|
448
|
+
function _checkClaimAmount(
|
449
|
+
NftId policyNftId,
|
450
|
+
IPolicy.PolicyInfo memory policyInfo,
|
451
|
+
Amount claimAmount
|
452
|
+
)
|
453
|
+
internal
|
454
|
+
pure
|
455
|
+
{
|
456
|
+
// check claim amount > 0
|
457
|
+
if (claimAmount.eqz()) {
|
458
|
+
revert ErrorClaimServiceClaimAmountIsZero(policyNftId);
|
459
|
+
}
|
460
|
+
|
461
|
+
// check policy including this claim is still within sum insured
|
462
|
+
if(policyInfo.claimAmount + claimAmount > policyInfo.sumInsuredAmount) {
|
463
|
+
revert ErrorClaimServiceClaimExceedsSumInsured(
|
464
|
+
policyNftId,
|
465
|
+
policyInfo.sumInsuredAmount,
|
466
|
+
policyInfo.payoutAmount + claimAmount);
|
467
|
+
}
|
468
|
+
}
|
469
|
+
|
470
|
+
function _createPayout(
|
471
|
+
NftId policyNftId,
|
472
|
+
ClaimId claimId,
|
473
|
+
Amount amount,
|
474
|
+
address beneficiary,
|
475
|
+
bytes memory data
|
476
|
+
)
|
477
|
+
internal
|
478
|
+
virtual
|
479
|
+
returns (PayoutId payoutId)
|
480
|
+
{
|
481
|
+
// checks
|
379
482
|
(
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
policyInfo,
|
387
|
-
payoutInfo);
|
483
|
+
,
|
484
|
+
,
|
485
|
+
InstanceReader instanceReader,
|
486
|
+
InstanceStore instanceStore,
|
487
|
+
IPolicy.PolicyInfo memory policyInfo
|
488
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
388
489
|
|
389
|
-
|
490
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
390
491
|
|
391
492
|
{
|
392
|
-
|
393
|
-
|
394
|
-
|
493
|
+
// check claim state
|
494
|
+
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
495
|
+
if (claimState != CONFIRMED()) {
|
496
|
+
revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
|
497
|
+
}
|
395
498
|
|
396
|
-
//
|
499
|
+
// check total payout amount remains within claim limit
|
500
|
+
Amount newPaidAmount = claimInfo.paidAmount + amount;
|
501
|
+
if (newPaidAmount > claimInfo.claimAmount) {
|
502
|
+
revert ErrorClaimServicePayoutExceedsClaimAmount(
|
503
|
+
policyNftId, claimId, claimInfo.claimAmount, newPaidAmount);
|
504
|
+
}
|
397
505
|
}
|
398
506
|
|
399
|
-
//
|
400
|
-
|
507
|
+
// effects
|
508
|
+
// create payout info with instance
|
509
|
+
uint24 payoutNo = claimInfo.payoutsCount + 1;
|
510
|
+
payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
|
511
|
+
if (beneficiary == address(0)) {
|
512
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
513
|
+
}
|
514
|
+
|
515
|
+
instanceStore.createPayout(
|
516
|
+
policyNftId,
|
517
|
+
payoutId,
|
518
|
+
IPolicy.PayoutInfo({
|
519
|
+
claimId: payoutId.toClaimId(),
|
520
|
+
amount: amount,
|
521
|
+
beneficiary: beneficiary,
|
522
|
+
data: data,
|
523
|
+
paidAt: TimestampLib.zero()}));
|
524
|
+
|
525
|
+
// update and save claim info with instance
|
526
|
+
claimInfo.payoutsCount += 1;
|
527
|
+
claimInfo.openPayoutsCount += 1;
|
528
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
529
|
+
|
530
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
|
401
531
|
}
|
402
532
|
|
533
|
+
|
403
534
|
function _calculatePayoutAmount(
|
404
535
|
InstanceReader instanceReader,
|
405
536
|
NftId policyNftId,
|
@@ -407,6 +538,7 @@ contract ClaimService is
|
|
407
538
|
IPolicy.PayoutInfo memory payoutInfo
|
408
539
|
)
|
409
540
|
internal
|
541
|
+
view
|
410
542
|
returns (
|
411
543
|
Amount netPayoutAmount,
|
412
544
|
Amount processingFeeAmount,
|
@@ -437,7 +569,6 @@ contract ClaimService is
|
|
437
569
|
}
|
438
570
|
}
|
439
571
|
|
440
|
-
// internal functions
|
441
572
|
|
442
573
|
function _verifyCallerWithPolicy(
|
443
574
|
NftId policyNftId
|
@@ -446,14 +577,16 @@ contract ClaimService is
|
|
446
577
|
view
|
447
578
|
virtual
|
448
579
|
returns (
|
580
|
+
NftId productNftId,
|
449
581
|
IInstance instance,
|
450
582
|
InstanceReader instanceReader,
|
583
|
+
InstanceStore instanceStore,
|
451
584
|
IPolicy.PolicyInfo memory policyInfo
|
452
585
|
)
|
453
586
|
{
|
454
|
-
|
455
|
-
(productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
587
|
+
(productNftId, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
456
588
|
instanceReader = instance.getInstanceReader();
|
589
|
+
instanceStore = instance.getInstanceStore();
|
457
590
|
|
458
591
|
// check caller(product) policy match
|
459
592
|
policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -464,6 +597,28 @@ contract ClaimService is
|
|
464
597
|
}
|
465
598
|
}
|
466
599
|
|
600
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
601
|
+
internal
|
602
|
+
view
|
603
|
+
returns (
|
604
|
+
NftId productNftId,
|
605
|
+
IInstance instance
|
606
|
+
)
|
607
|
+
{
|
608
|
+
(
|
609
|
+
IRegistry.ObjectInfo memory info,
|
610
|
+
address instanceAddress
|
611
|
+
) = ContractLib.getAndVerifyComponent(
|
612
|
+
getRegistry(),
|
613
|
+
msg.sender, // caller
|
614
|
+
PRODUCT(),
|
615
|
+
true); // isActive
|
616
|
+
|
617
|
+
// get component nft id and instance
|
618
|
+
productNftId = info.nftId;
|
619
|
+
instance = IInstance(instanceAddress);
|
620
|
+
}
|
621
|
+
|
467
622
|
function _verifyClaim(
|
468
623
|
InstanceReader instanceReader,
|
469
624
|
NftId policyNftId,
|
@@ -487,6 +642,22 @@ contract ClaimService is
|
|
487
642
|
claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
488
643
|
}
|
489
644
|
|
645
|
+
function _processConfirmedClaimByPool(
|
646
|
+
InstanceReader instanceReader,
|
647
|
+
NftId productNftId,
|
648
|
+
NftId policyNftId,
|
649
|
+
ClaimId claimId,
|
650
|
+
Amount amount
|
651
|
+
)
|
652
|
+
internal
|
653
|
+
{
|
654
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
655
|
+
if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
|
656
|
+
address poolAddress = getRegistry().getObjectAddress(poolNftId);
|
657
|
+
IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
|
658
|
+
}
|
659
|
+
}
|
660
|
+
|
490
661
|
|
491
662
|
function _policyHolderClaimConfirmed(
|
492
663
|
NftId policyNftId,
|