@etherisc/gif-next 0.0.2-f18fb8b-243 → 0.0.2-f1f3b2c-994
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +81 -63
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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 +48 -30
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +21 -2
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +72 -9
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -248
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +64 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
- 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 +1512 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1999 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -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 +1432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +17 -106
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +146 -112
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -129
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +44 -151
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +285 -228
- 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 +45 -4
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -229
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
- 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 +45 -31
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +42 -213
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +94 -274
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +458 -161
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +154 -86
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +229 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +87 -88
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +360 -171
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +84 -270
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +492 -333
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +62 -242
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +263 -181
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +104 -100
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +147 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +295 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +62 -57
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +406 -321
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +62 -242
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -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 +274 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +493 -80
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +263 -145
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +46 -5
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1061 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +70 -12
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +15 -205
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -161
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -95
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +15 -20
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +34 -31
- 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/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/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +34 -216
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +41 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +41 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -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 +8 -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 +5 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +42 -21
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +100 -256
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +45 -4
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +176 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- 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 +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +7 -2
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +31 -24
- package/contracts/authorization/Authorization.sol +5 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -2
- package/contracts/authorization/IServiceAuthorization.sol +4 -2
- package/contracts/authorization/ServiceAuthorization.sol +27 -11
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +23 -11
- package/contracts/distribution/DistributionService.sol +76 -42
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +411 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +11 -34
- package/contracts/instance/IInstanceService.sol +5 -5
- package/contracts/instance/Instance.sol +13 -38
- package/contracts/instance/InstanceAdmin.sol +31 -9
- package/contracts/instance/InstanceAuthorizationV3.sol +16 -14
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +71 -49
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +4 -8
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +17 -7
- package/contracts/oracle/OracleService.sol +11 -8
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +11 -2
- package/contracts/pool/BundleService.sol +221 -56
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +42 -5
- package/contracts/pool/IPoolComponent.sol +24 -8
- package/contracts/pool/IPoolService.sol +57 -36
- package/contracts/pool/Pool.sol +72 -30
- package/contracts/pool/PoolService.sol +240 -129
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +62 -65
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +254 -115
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -32
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +18 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +404 -193
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +90 -50
- package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +65 -19
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +340 -211
- package/contracts/registry/RegistryAdmin.sol +155 -72
- package/contracts/registry/RegistryService.sol +59 -66
- package/contracts/registry/RegistryServiceManager.sol +4 -4
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +496 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +13 -15
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +38 -43
- package/contracts/shared/ComponentService.sol +88 -28
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +7 -4
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +26 -6
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +13 -2
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +7 -7
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +19 -15
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -3
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +27 -42
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +19 -18
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +33 -10
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- 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/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.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/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/ReleaseManager.sol +0 -487
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,48 +1,26 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IRisk} from "../instance/module/IRisk.sol";
|
5
|
-
import {IService} from "./IApplicationService.sol";
|
6
|
-
|
7
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
8
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
-
import {IProductComponent} from "./IProductComponent.sol";
|
10
|
-
import {Product} from "./Product.sol";
|
11
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
12
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
13
|
-
import {IInstance} from "../instance/IInstance.sol";
|
14
|
-
import {IPolicy} from "../instance/module/IPolicy.sol";
|
15
|
-
import {IRisk} from "../instance/module/IRisk.sol";
|
16
|
-
import {IBundle} from "../instance/module/IBundle.sol";
|
17
|
-
import {IProductService} from "./IProductService.sol";
|
18
|
-
|
19
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
20
|
-
|
21
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
22
|
-
import {Versionable} from "../shared/Versionable.sol";
|
23
|
-
|
24
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
25
|
-
import {
|
26
|
-
import {
|
27
|
-
import {
|
28
|
-
import {
|
29
|
-
import {
|
30
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
31
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
32
|
-
import {ReferralId} from "../type/Referral.sol";
|
33
|
-
import {RiskId} from "../type/RiskId.sol";
|
5
|
+
import {TimestampLib} from "../type/Timestamp.sol";
|
6
|
+
import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
|
7
|
+
import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
|
8
|
+
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {FeeLib} from "../type/Fee.sol";
|
34
10
|
import {StateId} from "../type/StateId.sol";
|
35
11
|
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
36
12
|
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
37
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
38
|
-
|
39
13
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
14
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
40
15
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
41
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
42
16
|
import {IClaimService} from "./IClaimService.sol";
|
17
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
18
|
+
import {IInstance} from "../instance/IInstance.sol";
|
19
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
20
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
21
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
22
|
+
import {IPolicyService} from "../product/IPolicyService.sol";
|
43
23
|
import {IPoolService} from "../pool/IPoolService.sol";
|
44
|
-
import {IService} from "../shared/IService.sol";
|
45
|
-
import {Service} from "../shared/Service.sol";
|
46
24
|
|
47
25
|
|
48
26
|
contract ClaimService is
|
@@ -50,6 +28,7 @@ contract ClaimService is
|
|
50
28
|
IClaimService
|
51
29
|
{
|
52
30
|
|
31
|
+
IPolicyService internal _policyService;
|
53
32
|
IPoolService internal _poolService;
|
54
33
|
|
55
34
|
function _initialize(
|
@@ -61,16 +40,16 @@ contract ClaimService is
|
|
61
40
|
initializer()
|
62
41
|
{
|
63
42
|
(
|
64
|
-
address registryAddress
|
65
|
-
//address managerAddress
|
43
|
+
address registryAddress,
|
66
44
|
address authority
|
67
|
-
) = abi.decode(data, (address, address
|
45
|
+
) = abi.decode(data, (address, address));
|
68
46
|
|
69
|
-
|
47
|
+
_initializeService(registryAddress, authority, owner);
|
70
48
|
|
49
|
+
_policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
|
71
50
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
72
51
|
|
73
|
-
|
52
|
+
_registerInterface(type(IClaimService).interfaceId);
|
74
53
|
}
|
75
54
|
|
76
55
|
function submit(
|
@@ -80,9 +59,11 @@ contract ClaimService is
|
|
80
59
|
)
|
81
60
|
external
|
82
61
|
virtual
|
62
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
83
63
|
returns (ClaimId claimId)
|
84
64
|
{
|
85
65
|
(
|
66
|
+
,
|
86
67
|
IInstance instance,
|
87
68
|
InstanceReader instanceReader,
|
88
69
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -93,6 +74,7 @@ contract ClaimService is
|
|
93
74
|
revert ErrorClaimServicePolicyNotOpen(policyNftId);
|
94
75
|
}
|
95
76
|
|
77
|
+
// TODO check claim amount > 0
|
96
78
|
// check policy including this claim is still within sum insured
|
97
79
|
if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
|
98
80
|
revert ErrorClaimServiceClaimExceedsSumInsured(
|
@@ -106,14 +88,14 @@ contract ClaimService is
|
|
106
88
|
instance.getInstanceStore().createClaim(
|
107
89
|
policyNftId,
|
108
90
|
claimId,
|
109
|
-
IPolicy.ClaimInfo(
|
110
|
-
claimAmount,
|
111
|
-
AmountLib.zero(),
|
112
|
-
0,
|
113
|
-
0,
|
114
|
-
claimData,
|
115
|
-
"",
|
116
|
-
TimestampLib.zero()));
|
91
|
+
IPolicy.ClaimInfo({
|
92
|
+
claimAmount: claimAmount,
|
93
|
+
paidAmount: AmountLib.zero(),
|
94
|
+
payoutsCount: 0,
|
95
|
+
openPayoutsCount: 0,
|
96
|
+
submissionData: claimData,
|
97
|
+
processData: "",
|
98
|
+
closedAt: TimestampLib.zero()}));
|
117
99
|
|
118
100
|
// update and save policy info with instance
|
119
101
|
policyInfo.claimsCount += 1;
|
@@ -133,13 +115,17 @@ contract ClaimService is
|
|
133
115
|
)
|
134
116
|
external
|
135
117
|
virtual
|
118
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
136
119
|
{
|
137
120
|
(
|
121
|
+
NftId productNftId,
|
138
122
|
IInstance instance,
|
139
123
|
InstanceReader instanceReader,
|
140
124
|
IPolicy.PolicyInfo memory policyInfo
|
141
125
|
) = _verifyCallerWithPolicy(policyNftId);
|
142
126
|
|
127
|
+
// TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
|
128
|
+
|
143
129
|
// check/update claim info
|
144
130
|
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
145
131
|
claimInfo.claimAmount = confirmedAmount;
|
@@ -150,9 +136,21 @@ contract ClaimService is
|
|
150
136
|
policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
|
151
137
|
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
152
138
|
|
139
|
+
// should policy still be active it needs to become expired
|
140
|
+
if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
|
141
|
+
_policyService.expirePolicy(instance, policyNftId, TimestampLib.blockTimestamp());
|
142
|
+
}
|
143
|
+
|
153
144
|
emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
145
|
+
|
146
|
+
// callback to pool if applicable
|
147
|
+
_processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
|
148
|
+
|
149
|
+
// callback to policy holder if applicable
|
150
|
+
_policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
|
154
151
|
}
|
155
152
|
|
153
|
+
|
156
154
|
function decline(
|
157
155
|
NftId policyNftId,
|
158
156
|
ClaimId claimId,
|
@@ -160,8 +158,10 @@ contract ClaimService is
|
|
160
158
|
)
|
161
159
|
external
|
162
160
|
virtual
|
161
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
163
162
|
{
|
164
163
|
(
|
164
|
+
,
|
165
165
|
IInstance instance,
|
166
166
|
InstanceReader instanceReader,
|
167
167
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -180,14 +180,46 @@ contract ClaimService is
|
|
180
180
|
emit LogClaimServiceClaimDeclined(policyNftId, claimId);
|
181
181
|
}
|
182
182
|
|
183
|
+
|
184
|
+
// TODO add test case
|
185
|
+
function revoke(
|
186
|
+
NftId policyNftId,
|
187
|
+
ClaimId claimId
|
188
|
+
)
|
189
|
+
external
|
190
|
+
virtual
|
191
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
192
|
+
{
|
193
|
+
(
|
194
|
+
,
|
195
|
+
IInstance instance,
|
196
|
+
InstanceReader instanceReader,
|
197
|
+
IPolicy.PolicyInfo memory policyInfo
|
198
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
199
|
+
|
200
|
+
// check/update claim info
|
201
|
+
IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
|
202
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
203
|
+
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, REVOKED());
|
204
|
+
|
205
|
+
// update and save policy info with instance
|
206
|
+
policyInfo.openClaimsCount -= 1;
|
207
|
+
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
208
|
+
|
209
|
+
emit LogClaimServiceClaimRevoked(policyNftId, claimId);
|
210
|
+
}
|
211
|
+
|
212
|
+
|
183
213
|
function close(
|
184
214
|
NftId policyNftId,
|
185
215
|
ClaimId claimId
|
186
216
|
)
|
187
217
|
external
|
188
218
|
virtual
|
219
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
189
220
|
{
|
190
221
|
(
|
222
|
+
,
|
191
223
|
IInstance instance,
|
192
224
|
InstanceReader instanceReader,
|
193
225
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -218,51 +250,48 @@ contract ClaimService is
|
|
218
250
|
}
|
219
251
|
|
220
252
|
|
221
|
-
function
|
253
|
+
function createPayoutForBeneficiary(
|
222
254
|
NftId policyNftId,
|
223
255
|
ClaimId claimId,
|
224
256
|
Amount amount,
|
257
|
+
address beneficiary,
|
225
258
|
bytes memory data
|
226
259
|
)
|
227
260
|
external
|
261
|
+
virtual
|
262
|
+
// nonReentrant() // prevents creating a reinsurance claim in a single tx
|
228
263
|
returns (PayoutId payoutId)
|
229
264
|
{
|
230
|
-
(
|
231
|
-
|
232
|
-
|
233
|
-
IPolicy.PolicyInfo memory policyInfo
|
234
|
-
) = _verifyCallerWithPolicy(policyNftId);
|
235
|
-
|
236
|
-
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
237
|
-
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
238
|
-
|
239
|
-
// TODO add checks
|
240
|
-
// claim needs to be open
|
241
|
-
// claim.paidAmount + amount <= claim.claimAmount
|
265
|
+
if (beneficiary == address(0)) {
|
266
|
+
revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
|
267
|
+
}
|
242
268
|
|
243
|
-
|
244
|
-
// create payout info with instance
|
245
|
-
uint8 claimNo = claimInfo.payoutsCount + 1;
|
246
|
-
payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
|
247
|
-
instance.getInstanceStore().createPayout(
|
269
|
+
return _createPayout(
|
248
270
|
policyNftId,
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
TimestampLib.zero()));
|
255
|
-
|
256
|
-
// update and save claim info with instance
|
257
|
-
claimInfo.payoutsCount += 1;
|
258
|
-
claimInfo.openPayoutsCount += 1;
|
259
|
-
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
271
|
+
claimId,
|
272
|
+
amount,
|
273
|
+
beneficiary,
|
274
|
+
data);
|
275
|
+
}
|
260
276
|
|
261
|
-
// update and save policy info with instance
|
262
|
-
policyInfo.payoutAmount.add(amount);
|
263
|
-
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
264
277
|
|
265
|
-
|
278
|
+
function createPayout(
|
279
|
+
NftId policyNftId,
|
280
|
+
ClaimId claimId,
|
281
|
+
Amount amount,
|
282
|
+
bytes memory data
|
283
|
+
)
|
284
|
+
external
|
285
|
+
virtual
|
286
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
287
|
+
returns (PayoutId payoutId)
|
288
|
+
{
|
289
|
+
return _createPayout(
|
290
|
+
policyNftId,
|
291
|
+
claimId,
|
292
|
+
amount,
|
293
|
+
address(0), // defaults to owner of policy nft
|
294
|
+
data);
|
266
295
|
}
|
267
296
|
|
268
297
|
|
@@ -272,8 +301,10 @@ contract ClaimService is
|
|
272
301
|
)
|
273
302
|
external
|
274
303
|
virtual
|
304
|
+
// nonReentrant() // prevents creating a reinsurance payout in a single tx
|
275
305
|
{
|
276
306
|
(
|
307
|
+
,
|
277
308
|
IInstance instance,
|
278
309
|
InstanceReader instanceReader,
|
279
310
|
IPolicy.PolicyInfo memory policyInfo
|
@@ -286,7 +317,6 @@ contract ClaimService is
|
|
286
317
|
payoutInfo.paidAt = TimestampLib.blockTimestamp();
|
287
318
|
instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
|
288
319
|
|
289
|
-
// TODO update and save claim info with instance
|
290
320
|
ClaimId claimId = payoutId.toClaimId();
|
291
321
|
Amount payoutAmount = payoutInfo.amount;
|
292
322
|
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
@@ -296,7 +326,7 @@ contract ClaimService is
|
|
296
326
|
// check if this payout is closing the linked claim
|
297
327
|
// update claim and policy info accordingly
|
298
328
|
if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
|
299
|
-
claimInfo.closedAt
|
329
|
+
claimInfo.closedAt = TimestampLib.blockTimestamp();
|
300
330
|
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
|
301
331
|
|
302
332
|
policyInfo.openClaimsCount -= 1;
|
@@ -309,30 +339,97 @@ contract ClaimService is
|
|
309
339
|
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
310
340
|
|
311
341
|
// inform pool about payout
|
312
|
-
_poolService.
|
342
|
+
_poolService.processPayout(
|
313
343
|
instance,
|
314
344
|
address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
|
315
345
|
policyNftId,
|
316
346
|
policyInfo,
|
317
347
|
payoutAmount);
|
318
|
-
|
348
|
+
|
319
349
|
// transfer payout token and fee
|
320
350
|
(
|
321
351
|
Amount netPayoutAmount,
|
352
|
+
Amount processingFeeAmount,
|
322
353
|
address beneficiary
|
323
|
-
) =
|
354
|
+
) = _calculatePayoutAmount(
|
324
355
|
instanceReader,
|
325
356
|
policyNftId,
|
326
357
|
policyInfo,
|
327
358
|
payoutInfo);
|
328
359
|
|
329
|
-
|
360
|
+
emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
|
361
|
+
|
362
|
+
{
|
363
|
+
NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
|
364
|
+
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
365
|
+
poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
|
366
|
+
|
367
|
+
// TODO add 2nd token tx if processingFeeAmount > 0
|
368
|
+
}
|
330
369
|
|
331
|
-
|
370
|
+
// callback to policy holder if applicable
|
371
|
+
_policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
|
332
372
|
}
|
333
373
|
|
334
|
-
//
|
335
|
-
|
374
|
+
// internal functions
|
375
|
+
|
376
|
+
|
377
|
+
function _createPayout(
|
378
|
+
NftId policyNftId,
|
379
|
+
ClaimId claimId,
|
380
|
+
Amount amount,
|
381
|
+
address beneficiary,
|
382
|
+
bytes memory data
|
383
|
+
)
|
384
|
+
internal
|
385
|
+
virtual
|
386
|
+
returns (PayoutId payoutId)
|
387
|
+
{
|
388
|
+
(
|
389
|
+
,
|
390
|
+
IInstance instance,
|
391
|
+
InstanceReader instanceReader,
|
392
|
+
IPolicy.PolicyInfo memory policyInfo
|
393
|
+
) = _verifyCallerWithPolicy(policyNftId);
|
394
|
+
|
395
|
+
IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
396
|
+
StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
|
397
|
+
|
398
|
+
// TODO add checks
|
399
|
+
// claim needs to be open
|
400
|
+
// claim.paidAmount + amount <= claim.claimAmount
|
401
|
+
|
402
|
+
// check/update claim info
|
403
|
+
// create payout info with instance
|
404
|
+
uint24 payoutNo = claimInfo.payoutsCount + 1;
|
405
|
+
payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
|
406
|
+
if (beneficiary == address(0)) {
|
407
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
408
|
+
}
|
409
|
+
instance.getInstanceStore().createPayout(
|
410
|
+
policyNftId,
|
411
|
+
payoutId,
|
412
|
+
IPolicy.PayoutInfo({
|
413
|
+
claimId: payoutId.toClaimId(),
|
414
|
+
amount: amount,
|
415
|
+
beneficiary: beneficiary,
|
416
|
+
data: data,
|
417
|
+
paidAt: TimestampLib.zero()}));
|
418
|
+
|
419
|
+
// update and save claim info with instance
|
420
|
+
claimInfo.payoutsCount += 1;
|
421
|
+
claimInfo.openPayoutsCount += 1;
|
422
|
+
instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
|
423
|
+
|
424
|
+
// update and save policy info with instance
|
425
|
+
policyInfo.payoutAmount.add(amount);
|
426
|
+
instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
|
427
|
+
|
428
|
+
emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
|
429
|
+
}
|
430
|
+
|
431
|
+
|
432
|
+
function _calculatePayoutAmount(
|
336
433
|
InstanceReader instanceReader,
|
337
434
|
NftId policyNftId,
|
338
435
|
IPolicy.PolicyInfo memory policyInfo,
|
@@ -341,6 +438,7 @@ contract ClaimService is
|
|
341
438
|
internal
|
342
439
|
returns (
|
343
440
|
Amount netPayoutAmount,
|
441
|
+
Amount processingFeeAmount,
|
344
442
|
address beneficiary
|
345
443
|
)
|
346
444
|
{
|
@@ -354,38 +452,20 @@ contract ClaimService is
|
|
354
452
|
IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
|
355
453
|
|
356
454
|
netPayoutAmount = payoutAmount;
|
357
|
-
|
455
|
+
|
456
|
+
if (payoutInfo.beneficiary == address(0)) {
|
457
|
+
beneficiary = getRegistry().ownerOf(policyNftId);
|
458
|
+
} else {
|
459
|
+
beneficiary = payoutInfo.beneficiary;
|
460
|
+
}
|
358
461
|
|
359
462
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
360
463
|
if(FeeLib.gtz(productInfo.processingFee)) {
|
361
|
-
// TODO calculate net payout and processing fees
|
362
|
-
// TODO transfer processing fees to product wallet
|
363
|
-
// TODO inform product to update fee book keeping
|
464
|
+
// TODO calculate and set net payout and processing fees
|
364
465
|
}
|
365
|
-
|
366
|
-
poolInfo.tokenHandler.transfer(
|
367
|
-
poolInfo.wallet,
|
368
|
-
beneficiary,
|
369
|
-
netPayoutAmount);
|
370
466
|
}
|
371
467
|
}
|
372
468
|
|
373
|
-
// internal functions
|
374
|
-
|
375
|
-
function _getBeneficiary(
|
376
|
-
NftId policyNftId,
|
377
|
-
ClaimId claimId
|
378
|
-
)
|
379
|
-
internal
|
380
|
-
returns (address beneficiary)
|
381
|
-
{
|
382
|
-
// TODO check if owner is IPolicyHolder
|
383
|
-
// if so, obtain beneficiary from this contract
|
384
|
-
|
385
|
-
// default beneficiary is policy nft owner
|
386
|
-
beneficiary = getRegistry().ownerOf(policyNftId);
|
387
|
-
}
|
388
|
-
|
389
469
|
|
390
470
|
function _verifyCallerWithPolicy(
|
391
471
|
NftId policyNftId
|
@@ -394,12 +474,12 @@ contract ClaimService is
|
|
394
474
|
view
|
395
475
|
virtual
|
396
476
|
returns (
|
477
|
+
NftId productNftId,
|
397
478
|
IInstance instance,
|
398
479
|
InstanceReader instanceReader,
|
399
480
|
IPolicy.PolicyInfo memory policyInfo
|
400
481
|
)
|
401
482
|
{
|
402
|
-
NftId productNftId;
|
403
483
|
(productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
|
404
484
|
instanceReader = instance.getInstanceReader();
|
405
485
|
|
@@ -435,6 +515,65 @@ contract ClaimService is
|
|
435
515
|
claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
|
436
516
|
}
|
437
517
|
|
518
|
+
function _processConfirmedClaimByPool(
|
519
|
+
InstanceReader instanceReader,
|
520
|
+
NftId productNftId,
|
521
|
+
NftId policyNftId,
|
522
|
+
ClaimId claimId,
|
523
|
+
Amount amount
|
524
|
+
)
|
525
|
+
internal
|
526
|
+
{
|
527
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
528
|
+
if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
|
529
|
+
address poolAddress = getRegistry().getObjectAddress(poolNftId);
|
530
|
+
IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
|
531
|
+
}
|
532
|
+
}
|
533
|
+
|
534
|
+
|
535
|
+
function _policyHolderClaimConfirmed(
|
536
|
+
NftId policyNftId,
|
537
|
+
ClaimId claimId,
|
538
|
+
Amount confirmedAmount
|
539
|
+
)
|
540
|
+
internal
|
541
|
+
{
|
542
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
543
|
+
if(address(policyHolder) != address(0)) {
|
544
|
+
policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
|
545
|
+
}
|
546
|
+
}
|
547
|
+
|
548
|
+
|
549
|
+
function _policyHolderPayoutExecuted(
|
550
|
+
NftId policyNftId,
|
551
|
+
PayoutId payoutId,
|
552
|
+
address beneficiary,
|
553
|
+
Amount payoutAmount
|
554
|
+
)
|
555
|
+
internal
|
556
|
+
{
|
557
|
+
IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
|
558
|
+
if(address(policyHolder) != address(0)) {
|
559
|
+
policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
|
560
|
+
}
|
561
|
+
}
|
562
|
+
|
563
|
+
|
564
|
+
function _getPolicyHolder(NftId policyNftId)
|
565
|
+
internal
|
566
|
+
view
|
567
|
+
returns (IPolicyHolder policyHolder)
|
568
|
+
{
|
569
|
+
address policyHolderAddress = getRegistry().ownerOf(policyNftId);
|
570
|
+
policyHolder = IPolicyHolder(policyHolderAddress);
|
571
|
+
|
572
|
+
if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
|
573
|
+
policyHolder = IPolicyHolder(address(0));
|
574
|
+
}
|
575
|
+
}
|
576
|
+
|
438
577
|
|
439
578
|
function _getDomain() internal pure override returns(ObjectType) {
|
440
579
|
return CLAIM();
|
@@ -1,8 +1,8 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IVersionable} from "../
|
5
|
-
import {ProxyManager} from "../
|
4
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
6
6
|
import {ClaimService} from "./ClaimService.sol";
|
7
7
|
|
8
8
|
contract ClaimServiceManager is ProxyManager {
|
@@ -12,14 +12,14 @@ contract ClaimServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with service implementation
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
|
-
ProxyManager(registryAddress)
|
19
18
|
{
|
20
19
|
ClaimService svc = new ClaimService{salt: salt}();
|
21
|
-
bytes memory data = abi.encode(
|
22
|
-
IVersionable versionable =
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
23
|
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
@@ -23,16 +23,20 @@ interface IClaimService is
|
|
23
23
|
event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
|
24
24
|
event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
|
25
25
|
event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
|
26
|
+
event LogClaimServiceClaimRevoked(NftId policyNftId, ClaimId claimId);
|
26
27
|
event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
|
27
28
|
|
28
|
-
event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
|
29
|
-
event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
|
29
|
+
event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
|
30
|
+
event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
|
31
|
+
error ErrorClaimServiceBeneficiarySet(NftId policyNftId, PayoutId payoutId, address beneficiary);
|
30
32
|
|
31
33
|
error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
|
32
34
|
error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
|
33
35
|
error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
|
36
|
+
error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
|
37
|
+
error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
|
34
38
|
|
35
|
-
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId,
|
39
|
+
error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint24 openPayouts);
|
36
40
|
error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
|
37
41
|
error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
|
38
42
|
|
@@ -46,9 +50,6 @@ interface IClaimService is
|
|
46
50
|
) external returns (ClaimId claimId);
|
47
51
|
|
48
52
|
|
49
|
-
// TODO add claim revoke functionality
|
50
|
-
|
51
|
-
|
52
53
|
/// @dev declines the specified claim
|
53
54
|
/// function can only be called by product, policy needs to match with calling product
|
54
55
|
function decline(
|
@@ -58,6 +59,14 @@ interface IClaimService is
|
|
58
59
|
) external;
|
59
60
|
|
60
61
|
|
62
|
+
/// @dev revokes the specified claim
|
63
|
+
/// function can only be called by product, policy needs to match with calling product
|
64
|
+
function revoke(
|
65
|
+
NftId policyNftId,
|
66
|
+
ClaimId claimId
|
67
|
+
) external;
|
68
|
+
|
69
|
+
|
61
70
|
/// @dev confirms the specified claim and specifies the payout amount
|
62
71
|
/// function can only be called by product, policy needs to match with calling product
|
63
72
|
function confirm(
|
@@ -76,7 +85,8 @@ interface IClaimService is
|
|
76
85
|
) external;
|
77
86
|
|
78
87
|
|
79
|
-
/// @dev
|
88
|
+
/// @dev Creates a new payout for the specified claim.
|
89
|
+
/// The beneficiary is the holder of the policy NFT
|
80
90
|
/// returns the id of the newly created payout, this id is unique for the specified policy
|
81
91
|
/// function can only be called by product, policy needs to match with calling product
|
82
92
|
function createPayout(
|
@@ -89,6 +99,20 @@ interface IClaimService is
|
|
89
99
|
returns (PayoutId payoutId);
|
90
100
|
|
91
101
|
|
102
|
+
/// @dev Creates a new payout for the specified claim and beneficiary.
|
103
|
+
/// returns the id of the newly created payout, this id is unique for the specified policy
|
104
|
+
/// function can only be called by product, policy needs to match with calling product
|
105
|
+
function createPayoutForBeneficiary(
|
106
|
+
NftId policyNftId,
|
107
|
+
ClaimId claimId,
|
108
|
+
Amount amount,
|
109
|
+
address beneficiary,
|
110
|
+
bytes memory data
|
111
|
+
)
|
112
|
+
external
|
113
|
+
returns (PayoutId payoutId);
|
114
|
+
|
115
|
+
|
92
116
|
/// @dev processes the specified payout
|
93
117
|
/// this includes moving the payout token to the beneficiary (default: policy holder)
|
94
118
|
/// function can only be called by product, policy needs to match with calling product
|