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