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