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