@etherisc/gif-next 0.0.2-fbe6493-116 → 0.0.2-fc0563c-260
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 +89 -9
- 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 +190 -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 +109 -356
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +638 -386
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +208 -132
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -191
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +478 -108
- 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 +1472 -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 +2045 -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 +1423 -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 +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1639 -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 +2484 -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 +560 -66
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +377 -58
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +568 -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 +390 -228
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +142 -104
- 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 +866 -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 +135 -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 +103 -133
- 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 +111 -293
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +176 -96
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +160 -350
- 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 +348 -431
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +169 -133
- 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 +141 -182
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +517 -281
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +139 -332
- 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 +701 -551
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +205 -113
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +357 -173
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +164 -96
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +288 -409
- 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 +453 -287
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +186 -126
- 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 +333 -17
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +300 -64
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +257 -226
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +385 -336
- 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 +174 -126
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +164 -136
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +280 -401
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -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 +356 -45
- 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 +562 -106
- 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 +136 -290
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +140 -88
- 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 +99 -252
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +480 -696
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +176 -146
- 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 +92 -93
- 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 +103 -133
- 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 +35 -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 +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 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +110 -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 +41 -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 +141 -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 +86 -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 +341 -133
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +184 -23
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +468 -405
- 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 +177 -108
- 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 +253 -171
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +157 -93
- 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/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 +117 -78
- 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 +456 -267
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +159 -208
- 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 +242 -117
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +4 -11
- package/contracts/distribution/IDistributionService.sol +46 -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 +391 -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 +56 -32
- 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 +275 -243
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +23 -2
- package/contracts/instance/RiskSet.sol +126 -0
- package/contracts/instance/base/BalanceStore.sol +3 -5
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -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 +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 +33 -37
- package/contracts/pool/BasicPoolAuthorization.sol +34 -11
- package/contracts/pool/BundleService.sol +113 -164
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +28 -45
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +93 -73
- package/contracts/pool/Pool.sol +140 -135
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +377 -291
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +111 -34
- 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 +382 -158
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +28 -3
- package/contracts/product/IClaimService.sol +43 -8
- package/contracts/product/IPolicyService.sol +47 -29
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/IRiskService.sol +48 -0
- package/contracts/product/PolicyService.sol +374 -324
- 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 +166 -96
- package/contracts/product/RiskService.sol +190 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +70 -29
- 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 +364 -204
- package/contracts/registry/RegistryAdmin.sol +110 -287
- package/contracts/registry/RegistryAuthorization.sol +284 -0
- package/contracts/registry/RegistryService.sol +38 -49
- 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 +202 -57
- package/contracts/registry/TokenRegistry.sol +12 -13
- package/contracts/shared/Component.sol +66 -137
- package/contracts/shared/ComponentService.sol +415 -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 +43 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +2 -28
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +4 -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 +31 -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/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +93 -45
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
- 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/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
- 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/IProductService.sol +0 -33
- 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,58 @@ contract ClaimService is
|
|
189
254
|
}
|
190
255
|
|
191
256
|
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
192
|
-
|
257
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
258
|
+
|
259
|
+
emit LogClaimServiceClaimClosed(policyNftId, claimId);
|
193
260
|
}
|
194
261
|
|
195
262
|
|
196
|
-
function
|
263
|
+
function createPayoutForBeneficiary(
|
197
264
|
NftId policyNftId,
|
198
265
|
ClaimId claimId,
|
199
266
|
Amount amount,
|
267
|
+
address beneficiary,
|
200
268
|
bytes memory data
|
201
269
|
)
|
202
270
|
external
|
271
|
+
virtual
|
272
|
+
restricted()
|
273
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
203
274
|
returns (PayoutId payoutId)
|
204
275
|
{
|
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
|
276
|
+
if (beneficiary == address(0)) {
|
277
|
+
revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
|
278
|
+
}
|
217
279
|
|
218
|
-
|
219
|
-
// create payout info with instance
|
220
|
-
uint8 claimNo = claimInfo.payoutsCount + 1;
|
221
|
-
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
222
|
-
instance.getInstanceStore().createPayout(
|
280
|
+
return _createPayout(
|
223
281
|
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());
|
282
|
+
claimId,
|
283
|
+
amount,
|
284
|
+
beneficiary,
|
285
|
+
data);
|
286
|
+
}
|
235
287
|
|
236
|
-
// update and save policy info with instance
|
237
|
-
policyInfo.payoutAmount.add(amount);
|
238
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
239
288
|
|
240
|
-
|
289
|
+
function createPayout(
|
290
|
+
NftId policyNftId,
|
291
|
+
ClaimId claimId,
|
292
|
+
Amount amount,
|
293
|
+
bytes memory data
|
294
|
+
)
|
295
|
+
external
|
296
|
+
virtual
|
297
|
+
restricted()
|
298
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
299
|
+
returns (PayoutId payoutId)
|
300
|
+
{
|
301
|
+
_checkNftType(policyNftId, POLICY());
|
302
|
+
|
303
|
+
return _createPayout(
|
304
|
+
policyNftId,
|
305
|
+
claimId,
|
306
|
+
amount,
|
307
|
+
address(0), // defaults to owner of policy nft
|
308
|
+
data);
|
241
309
|
}
|
242
310
|
|
243
311
|
|
@@ -247,118 +315,205 @@ contract ClaimService is
|
|
247
315
|
)
|
248
316
|
external
|
249
317
|
virtual
|
318
|
+
restricted()
|
319
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
320
|
+
returns (Amount netPayoutAmount, Amount processingFeeAmount)
|
250
321
|
{
|
322
|
+
// checks
|
251
323
|
(
|
252
|
-
|
324
|
+
,,
|
253
325
|
InstanceReader instanceReader,
|
326
|
+
InstanceStore instanceStore,
|
254
327
|
IPolicy.PolicyInfo memory policyInfo
|
255
328
|
) = _verifyCallerWithPolicy(policyNftId);
|
256
329
|
|
257
|
-
|
258
|
-
|
330
|
+
IPolicy.ClaimInfo memory claimInfo;
|
331
|
+
address payoutBeneficiary;
|
332
|
+
Amount payoutAmount;
|
333
|
+
|
334
|
+
{
|
335
|
+
// check that payout exists and is open
|
336
|
+
IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
|
337
|
+
payoutBeneficiary = payoutInfo.beneficiary;
|
338
|
+
payoutAmount = payoutInfo.amount;
|
339
|
+
StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
|
340
|
+
if(payoutState != EXPECTED()) {
|
341
|
+
revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
|
342
|
+
}
|
259
343
|
|
260
|
-
|
261
|
-
|
262
|
-
|
344
|
+
// check that payout amount does not violate claim amount
|
345
|
+
claimInfo = instanceReader.getClaimInfo(policyNftId, payoutId.toClaimId());
|
346
|
+
if(claimInfo.paidAmount + payoutInfo.amount > claimInfo.claimAmount) {
|
347
|
+
revert ErrorClaimServicePayoutExceedsClaimAmount(
|
348
|
+
policyNftId,
|
349
|
+
payoutId.toClaimId(),
|
350
|
+
claimInfo.claimAmount,
|
351
|
+
claimInfo.paidAmount + payoutInfo.amount);
|
352
|
+
}
|
263
353
|
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
354
|
+
// effects
|
355
|
+
// update and save payout info with instance
|
356
|
+
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
357
|
+
instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
358
|
+
}
|
359
|
+
|
360
|
+
// update and save claim info with instance
|
361
|
+
{
|
362
|
+
ClaimId claimId = payoutId.toClaimId();
|
363
|
+
// TODO cleanup
|
364
|
+
// IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
365
|
+
claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
|
366
|
+
claimInfo.openPayoutsCount -= 1;
|
367
|
+
|
368
|
+
// check if this payout is closing the linked claim
|
369
|
+
// update claim and policy info accordingly
|
370
|
+
if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
|
371
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
372
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
373
|
+
|
374
|
+
policyInfo.openClaimsCount -= 1;
|
375
|
+
} else {
|
376
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
377
|
+
}
|
280
378
|
}
|
281
379
|
|
282
380
|
// update and save policy info with instance
|
283
|
-
policyInfo.payoutAmount = policyInfo.payoutAmount
|
284
|
-
|
381
|
+
policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
|
382
|
+
instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
285
383
|
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
384
|
+
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount);
|
385
|
+
|
386
|
+
// effects + interactions (push tokens to beneficiary, product)
|
387
|
+
// delegate to pool to update book keeping and moving tokens payout
|
388
|
+
(netPayoutAmount, processingFeeAmount) = _poolService.processPayout(
|
389
|
+
instanceReader,
|
390
|
+
instanceStore,
|
391
|
+
policyInfo.productNftId, // product nft id
|
290
392
|
policyNftId,
|
291
|
-
policyInfo,
|
292
|
-
|
393
|
+
policyInfo.bundleNftId,
|
394
|
+
payoutId,
|
395
|
+
payoutAmount,
|
396
|
+
payoutBeneficiary);
|
397
|
+
}
|
293
398
|
|
294
|
-
|
399
|
+
function cancelPayout(
|
400
|
+
NftId policyNftId,
|
401
|
+
PayoutId payoutId
|
402
|
+
)
|
403
|
+
external
|
404
|
+
virtual
|
405
|
+
restricted()
|
406
|
+
{
|
407
|
+
// checks
|
295
408
|
(
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
policyNftId,
|
301
|
-
policyInfo,
|
302
|
-
payoutInfo);
|
409
|
+
,,
|
410
|
+
InstanceReader instanceReader,
|
411
|
+
InstanceStore instanceStore,
|
412
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
303
413
|
|
304
|
-
|
414
|
+
StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
|
415
|
+
if (payoutState != EXPECTED()) {
|
416
|
+
revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
|
417
|
+
}
|
305
418
|
|
306
|
-
|
419
|
+
// effects
|
420
|
+
// update and save payout info with instance
|
421
|
+
instanceStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
|
307
422
|
|
308
423
|
{
|
309
|
-
|
310
|
-
|
311
|
-
|
424
|
+
ClaimId claimId = payoutId.toClaimId();
|
425
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
426
|
+
claimInfo.openPayoutsCount -= 1;
|
427
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
312
428
|
}
|
429
|
+
|
430
|
+
emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
|
313
431
|
}
|
314
432
|
|
315
|
-
|
316
|
-
|
433
|
+
// internal functions
|
434
|
+
|
435
|
+
function _checkClaimAmount(
|
317
436
|
NftId policyNftId,
|
318
437
|
IPolicy.PolicyInfo memory policyInfo,
|
319
|
-
|
438
|
+
Amount claimAmount
|
320
439
|
)
|
321
440
|
internal
|
322
|
-
|
323
|
-
Amount netPayoutAmount,
|
324
|
-
address beneficiary
|
325
|
-
)
|
441
|
+
pure
|
326
442
|
{
|
327
|
-
|
443
|
+
// check claim amount > 0
|
444
|
+
if (claimAmount.eqz()) {
|
445
|
+
revert ErrorClaimServiceClaimAmountIsZero(policyNftId);
|
446
|
+
}
|
328
447
|
|
329
|
-
|
330
|
-
|
448
|
+
// check policy including this claim is still within sum insured
|
449
|
+
if(policyInfo.claimAmount + claimAmount > policyInfo.sumInsuredAmount) {
|
450
|
+
revert ErrorClaimServiceClaimExceedsSumInsured(
|
451
|
+
policyNftId,
|
452
|
+
policyInfo.sumInsuredAmount,
|
453
|
+
policyInfo.payoutAmount + claimAmount);
|
454
|
+
}
|
455
|
+
}
|
331
456
|
|
332
|
-
|
333
|
-
|
334
|
-
|
457
|
+
function _createPayout(
|
458
|
+
NftId policyNftId,
|
459
|
+
ClaimId claimId,
|
460
|
+
Amount amount,
|
461
|
+
address beneficiary,
|
462
|
+
bytes memory data
|
463
|
+
)
|
464
|
+
internal
|
465
|
+
virtual
|
466
|
+
returns (PayoutId payoutId)
|
467
|
+
{
|
468
|
+
// checks
|
469
|
+
(
|
470
|
+
,,
|
471
|
+
InstanceReader instanceReader,
|
472
|
+
InstanceStore instanceStore,
|
473
|
+
// IPolicy.PolicyInfo memory policyInfo
|
474
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
335
475
|
|
336
|
-
|
337
|
-
beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
|
476
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
338
477
|
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
478
|
+
{
|
479
|
+
// check claim state
|
480
|
+
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
481
|
+
if (claimState != CONFIRMED()) {
|
482
|
+
revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
|
483
|
+
}
|
484
|
+
|
485
|
+
// check total payout amount remains within claim limit
|
486
|
+
Amount newPaidAmount = claimInfo.paidAmount + amount;
|
487
|
+
if (newPaidAmount > claimInfo.claimAmount) {
|
488
|
+
revert ErrorClaimServicePayoutExceedsClaimAmount(
|
489
|
+
policyNftId, claimId, claimInfo.claimAmount, newPaidAmount);
|
344
490
|
}
|
345
491
|
}
|
346
|
-
}
|
347
492
|
|
348
|
-
|
493
|
+
// effects
|
494
|
+
// create payout info with instance
|
495
|
+
uint24 payoutNo = claimInfo.payoutsCount + 1;
|
496
|
+
payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
|
497
|
+
if (beneficiary == address(0)) {
|
498
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
499
|
+
}
|
349
500
|
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
501
|
+
instanceStore.createPayout(
|
502
|
+
policyNftId,
|
503
|
+
payoutId,
|
504
|
+
IPolicy.PayoutInfo({
|
505
|
+
claimId: payoutId.toClaimId(),
|
506
|
+
amount: amount,
|
507
|
+
beneficiary: beneficiary,
|
508
|
+
data: data,
|
509
|
+
paidAt: TimestampLib.zero()}));
|
510
|
+
|
511
|
+
// update and save claim info with instance
|
512
|
+
claimInfo.payoutsCount += 1;
|
513
|
+
claimInfo.openPayoutsCount += 1;
|
514
|
+
instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
359
515
|
|
360
|
-
|
361
|
-
beneficiary = getRegistry().ownerOf(policyNftId);
|
516
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
|
362
517
|
}
|
363
518
|
|
364
519
|
|
@@ -369,14 +524,16 @@ contract ClaimService is
|
|
369
524
|
view
|
370
525
|
virtual
|
371
526
|
returns (
|
527
|
+
NftId productNftId,
|
372
528
|
IInstance instance,
|
373
529
|
InstanceReader instanceReader,
|
530
|
+
InstanceStore instanceStore,
|
374
531
|
IPolicy.PolicyInfo memory policyInfo
|
375
532
|
)
|
376
533
|
{
|
377
|
-
|
378
|
-
(productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
534
|
+
(productNftId, instance) = _getAndVerifyActiveProduct();
|
379
535
|
instanceReader = instance.getInstanceReader();
|
536
|
+
instanceStore = instance.getInstanceStore();
|
380
537
|
|
381
538
|
// check caller(product) policy match
|
382
539
|
policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -387,6 +544,29 @@ contract ClaimService is
|
|
387
544
|
}
|
388
545
|
}
|
389
546
|
|
547
|
+
|
548
|
+
function _getAndVerifyActiveProduct()
|
549
|
+
internal
|
550
|
+
view
|
551
|
+
returns (
|
552
|
+
NftId productNftId,
|
553
|
+
IInstance instance
|
554
|
+
)
|
555
|
+
{
|
556
|
+
(
|
557
|
+
IRegistry.ObjectInfo memory info,
|
558
|
+
address instanceAddress
|
559
|
+
) = ContractLib.getAndVerifyComponent(
|
560
|
+
getRegistry(),
|
561
|
+
msg.sender, // caller
|
562
|
+
PRODUCT(),
|
563
|
+
true); // isActive
|
564
|
+
|
565
|
+
// get component nft id and instance
|
566
|
+
productNftId = info.nftId;
|
567
|
+
instance = IInstance(instanceAddress);
|
568
|
+
}
|
569
|
+
|
390
570
|
function _verifyClaim(
|
391
571
|
InstanceReader instanceReader,
|
392
572
|
NftId policyNftId,
|
@@ -410,6 +590,50 @@ contract ClaimService is
|
|
410
590
|
claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
411
591
|
}
|
412
592
|
|
593
|
+
function _processConfirmedClaimByPool(
|
594
|
+
InstanceReader instanceReader,
|
595
|
+
NftId productNftId,
|
596
|
+
NftId policyNftId,
|
597
|
+
ClaimId claimId,
|
598
|
+
Amount amount
|
599
|
+
)
|
600
|
+
internal
|
601
|
+
{
|
602
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
603
|
+
if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
|
604
|
+
address poolAddress = getRegistry().getObjectAddress(poolNftId);
|
605
|
+
IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
|
606
|
+
}
|
607
|
+
}
|
608
|
+
|
609
|
+
|
610
|
+
function _policyHolderClaimConfirmed(
|
611
|
+
NftId policyNftId,
|
612
|
+
ClaimId claimId,
|
613
|
+
Amount confirmedAmount
|
614
|
+
)
|
615
|
+
internal
|
616
|
+
{
|
617
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
618
|
+
if(address(policyHolder) != address(0)) {
|
619
|
+
policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
|
620
|
+
}
|
621
|
+
}
|
622
|
+
|
623
|
+
// TODO: move to policy helper lib or something
|
624
|
+
function _getPolicyHolder(NftId policyNftId)
|
625
|
+
internal
|
626
|
+
view
|
627
|
+
returns (IPolicyHolder policyHolder)
|
628
|
+
{
|
629
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
630
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
631
|
+
|
632
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
633
|
+
policyHolder = IPolicyHolder(address(0));
|
634
|
+
}
|
635
|
+
}
|
636
|
+
|
413
637
|
|
414
638
|
function _getDomain() internal pure override returns(ObjectType) {
|
415
639
|
return CLAIM();
|