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