@etherisc/gif-next 0.0.2-f1f3b2c-994 → 0.0.2-f2273b3-211
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 +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -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 +163 -55
- 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/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- 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 +94 -14
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +8 -8
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +113 -130
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +275 -171
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +111 -65
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +158 -195
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +336 -295
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -168
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -153
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +717 -292
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -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 +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +386 -117
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +590 -204
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +445 -375
- 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 +3 -3
- 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 +132 -173
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- 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 +94 -106
- 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 +108 -125
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +156 -326
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +330 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +130 -54
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +71 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +181 -116
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +224 -182
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +112 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
- 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 +98 -2
- 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 +142 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +277 -213
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +3 -3
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +337 -65
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +12 -12
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +105 -104
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -86
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +94 -106
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- 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/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/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +1 -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 +2 -2
- 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 +55 -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 +113 -136
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -49
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -206
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +3 -3
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -57
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +181 -55
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +130 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -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 +3 -3
- 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 +2 -2
- 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 +3 -3
- 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 +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- 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 +62 -5
- 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/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 +3 -3
- 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 +47 -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 +44 -12
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +216 -125
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -205
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +14 -8
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +41 -47
- package/contracts/distribution/DistributionService.sol +100 -78
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +25 -10
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +40 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +17 -10
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +52 -34
- package/contracts/instance/InstanceAdmin.sol +249 -100
- package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +85 -146
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- 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/IComponents.sol +10 -7
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +5 -16
- package/contracts/oracle/OracleService.sol +107 -78
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +88 -154
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -64
- package/contracts/pool/Pool.sol +112 -120
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +436 -242
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +24 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -12
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +202 -151
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +10 -1
- package/contracts/product/PolicyService.sol +248 -252
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +30 -26
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -60
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +14 -15
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +29 -6
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +40 -58
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +139 -124
- package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +69 -118
- package/contracts/shared/ComponentService.sol +422 -371
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +8 -20
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +68 -42
- package/contracts/shared/Lifecycle.sol +7 -7
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +53 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +9 -31
- package/contracts/shared/TokenHandler.sol +274 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -10
- package/contracts/staking/IStakingService.sol +12 -4
- package/contracts/staking/StakeManagerLib.sol +69 -20
- package/contracts/staking/Staking.sol +73 -41
- package/contracts/staking/StakingReader.sol +1 -16
- package/contracts/staking/StakingService.sol +70 -24
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +3 -3
- 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/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
| @@ -1,18 +1,6 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {Amount, AmountLib} from "../type/Amount.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";
         | 
| 10 | 
            -
            import {StateId} from "../type/StateId.sol";
         | 
| 11 | 
            -
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         | 
| 12 | 
            -
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         | 
| 13 | 
            -
            import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
         | 
| 14 | 
            -
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 15 | 
            -
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 16 4 | 
             
            import {IClaimService} from "./IClaimService.sol";
         | 
| 17 5 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 18 6 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| @@ -21,10 +9,25 @@ import {IPolicyHolder} from "../shared/IPolicyHolder.sol"; | |
| 21 9 | 
             
            import {IPoolComponent} from "../pool/IPoolComponent.sol";
         | 
| 22 10 | 
             
            import {IPolicyService} from "../product/IPolicyService.sol";
         | 
| 23 11 | 
             
            import {IPoolService} from "../pool/IPoolService.sol";
         | 
| 12 | 
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 15 | 
            +
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         | 
| 16 | 
            +
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 17 | 
            +
            import {FeeLib} from "../type/Fee.sol";
         | 
| 18 | 
            +
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 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";
         | 
| 24 27 |  | 
| 25 28 |  | 
| 26 29 | 
             
            contract ClaimService is 
         | 
| 27 | 
            -
                 | 
| 30 | 
            +
                Service, 
         | 
| 28 31 | 
             
                IClaimService
         | 
| 29 32 | 
             
            {
         | 
| 30 33 |  | 
| @@ -40,11 +43,11 @@ contract ClaimService is | |
| 40 43 | 
             
                    initializer()
         | 
| 41 44 | 
             
                {
         | 
| 42 45 | 
             
                    (
         | 
| 43 | 
            -
                        address  | 
| 44 | 
            -
                        address  | 
| 46 | 
            +
                        address authority,
         | 
| 47 | 
            +
                        address registry
         | 
| 45 48 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 46 49 |  | 
| 47 | 
            -
                     | 
| 50 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 48 51 |  | 
| 49 52 | 
             
                    _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
         | 
| 50 53 | 
             
                    _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
         | 
| @@ -60,12 +63,14 @@ contract ClaimService is | |
| 60 63 | 
             
                    external
         | 
| 61 64 | 
             
                    virtual
         | 
| 62 65 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 66 | 
            +
                    restricted()
         | 
| 63 67 | 
             
                    returns (ClaimId claimId)
         | 
| 64 68 | 
             
                {
         | 
| 69 | 
            +
                    // checks
         | 
| 65 70 | 
             
                    (
         | 
| 66 71 | 
             
                        ,
         | 
| 67 | 
            -
                        IInstance instance | 
| 68 | 
            -
                         | 
| 72 | 
            +
                        IInstance instance,,
         | 
| 73 | 
            +
                        InstanceStore instanceStore,
         | 
| 69 74 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 70 75 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 71 76 |  | 
| @@ -74,18 +79,12 @@ contract ClaimService is | |
| 74 79 | 
             
                        revert ErrorClaimServicePolicyNotOpen(policyNftId);
         | 
| 75 80 | 
             
                    }
         | 
| 76 81 |  | 
| 77 | 
            -
                     | 
| 78 | 
            -
                    // check policy including this claim is still within sum insured
         | 
| 79 | 
            -
                    if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
         | 
| 80 | 
            -
                        revert ErrorClaimServiceClaimExceedsSumInsured(
         | 
| 81 | 
            -
                            policyNftId, 
         | 
| 82 | 
            -
                            policyInfo.sumInsuredAmount,
         | 
| 83 | 
            -
                            AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
         | 
| 84 | 
            -
                    }
         | 
| 82 | 
            +
                    _checkClaimAmount(policyNftId, policyInfo, claimAmount);
         | 
| 85 83 |  | 
| 84 | 
            +
                    // effects
         | 
| 86 85 | 
             
                    // create new claim
         | 
| 87 86 | 
             
                    claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
         | 
| 88 | 
            -
                     | 
| 87 | 
            +
                    instanceStore.createClaim(
         | 
| 89 88 | 
             
                        policyNftId, 
         | 
| 90 89 | 
             
                        claimId, 
         | 
| 91 90 | 
             
                        IPolicy.ClaimInfo({
         | 
| @@ -98,10 +97,10 @@ contract ClaimService is | |
| 98 97 | 
             
                            closedAt: TimestampLib.zero()}));
         | 
| 99 98 |  | 
| 100 99 | 
             
                    // update and save policy info with instance
         | 
| 100 | 
            +
                    // policy claim amount is only updated when claim is confirmed
         | 
| 101 101 | 
             
                    policyInfo.claimsCount += 1;
         | 
| 102 102 | 
             
                    policyInfo.openClaimsCount += 1;
         | 
| 103 | 
            -
                     | 
| 104 | 
            -
                    instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 103 | 
            +
                    instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 105 104 |  | 
| 106 105 | 
             
                    emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
         | 
| 107 106 | 
             
                }
         | 
| @@ -117,24 +116,29 @@ contract ClaimService is | |
| 117 116 | 
             
                    virtual
         | 
| 118 117 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 119 118 | 
             
                {
         | 
| 119 | 
            +
                    // checks
         | 
| 120 | 
            +
                    _checkNftType(policyNftId, POLICY());
         | 
| 121 | 
            +
             | 
| 120 122 | 
             
                    (
         | 
| 121 123 | 
             
                        NftId productNftId,
         | 
| 122 124 | 
             
                        IInstance instance,
         | 
| 123 125 | 
             
                        InstanceReader instanceReader,
         | 
| 126 | 
            +
                        InstanceStore instanceStore,
         | 
| 124 127 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 125 128 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 126 129 |  | 
| 127 | 
            -
                     | 
| 130 | 
            +
                    _checkClaimAmount(policyNftId, policyInfo, confirmedAmount);
         | 
| 128 131 |  | 
| 132 | 
            +
                    // effects
         | 
| 129 133 | 
             
                    // check/update claim info
         | 
| 130 134 | 
             
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 131 135 | 
             
                    claimInfo.claimAmount = confirmedAmount;
         | 
| 132 136 | 
             
                    claimInfo.processData = data;
         | 
| 133 | 
            -
                     | 
| 137 | 
            +
                    instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
         | 
| 134 138 |  | 
| 135 139 | 
             
                    // update and save policy info with instance
         | 
| 136 140 | 
             
                    policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
         | 
| 137 | 
            -
                     | 
| 141 | 
            +
                    instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 138 142 |  | 
| 139 143 | 
             
                    // should policy still be active it needs to become expired
         | 
| 140 144 | 
             
                    if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
         | 
| @@ -143,6 +147,7 @@ contract ClaimService is | |
| 143 147 |  | 
| 144 148 | 
             
                    emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
         | 
| 145 149 |  | 
| 150 | 
            +
                    // interactions
         | 
| 146 151 | 
             
                    // callback to pool if applicable
         | 
| 147 152 | 
             
                    _processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
         | 
| 148 153 |  | 
| @@ -160,10 +165,13 @@ contract ClaimService is | |
| 160 165 | 
             
                    virtual
         | 
| 161 166 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 162 167 | 
             
                {
         | 
| 168 | 
            +
                    _checkNftType(policyNftId, POLICY());
         | 
| 169 | 
            +
             | 
| 163 170 | 
             
                    (
         | 
| 164 171 | 
             
                        ,
         | 
| 165 172 | 
             
                        IInstance instance,
         | 
| 166 173 | 
             
                        InstanceReader instanceReader,
         | 
| 174 | 
            +
                        InstanceStore instanceStore,
         | 
| 167 175 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 168 176 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 169 177 |  | 
| @@ -171,17 +179,16 @@ contract ClaimService is | |
| 171 179 | 
             
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 172 180 | 
             
                    claimInfo.processData = data;
         | 
| 173 181 | 
             
                    claimInfo.closedAt = TimestampLib.blockTimestamp();
         | 
| 174 | 
            -
                     | 
| 182 | 
            +
                    instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
         | 
| 175 183 |  | 
| 176 184 | 
             
                    // update and save policy info with instance
         | 
| 177 185 | 
             
                    policyInfo.openClaimsCount -= 1;
         | 
| 178 | 
            -
                     | 
| 186 | 
            +
                    instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 179 187 |  | 
| 180 188 | 
             
                    emit LogClaimServiceClaimDeclined(policyNftId, claimId);
         | 
| 181 189 | 
             
                }
         | 
| 182 190 |  | 
| 183 191 |  | 
| 184 | 
            -
                // TODO add test case
         | 
| 185 192 | 
             
                function revoke(
         | 
| 186 193 | 
             
                    NftId policyNftId, 
         | 
| 187 194 | 
             
                    ClaimId claimId
         | 
| @@ -189,22 +196,23 @@ contract ClaimService is | |
| 189 196 | 
             
                    external
         | 
| 190 197 | 
             
                    virtual
         | 
| 191 198 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 192 | 
            -
                {
         | 
| 199 | 
            +
                {        
         | 
| 193 200 | 
             
                    (
         | 
| 194 201 | 
             
                        ,
         | 
| 195 202 | 
             
                        IInstance instance,
         | 
| 196 203 | 
             
                        InstanceReader instanceReader,
         | 
| 204 | 
            +
                        InstanceStore instanceStore,
         | 
| 197 205 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 198 206 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 199 207 |  | 
| 200 208 | 
             
                    // check/update claim info
         | 
| 201 209 | 
             
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 202 210 | 
             
                    claimInfo.closedAt = TimestampLib.blockTimestamp();
         | 
| 203 | 
            -
                     | 
| 211 | 
            +
                    instanceStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
         | 
| 204 212 |  | 
| 205 213 | 
             
                    // update and save policy info with instance
         | 
| 206 214 | 
             
                    policyInfo.openClaimsCount -= 1;
         | 
| 207 | 
            -
                     | 
| 215 | 
            +
                    instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 208 216 |  | 
| 209 217 | 
             
                    emit LogClaimServiceClaimRevoked(policyNftId, claimId);
         | 
| 210 218 | 
             
                }
         | 
| @@ -218,10 +226,13 @@ contract ClaimService is | |
| 218 226 | 
             
                    virtual
         | 
| 219 227 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 220 228 | 
             
                {
         | 
| 229 | 
            +
                    _checkNftType(policyNftId, POLICY());
         | 
| 230 | 
            +
                    
         | 
| 221 231 | 
             
                    (
         | 
| 222 232 | 
             
                        ,
         | 
| 223 233 | 
             
                        IInstance instance,
         | 
| 224 234 | 
             
                        InstanceReader instanceReader,
         | 
| 235 | 
            +
                        InstanceStore instanceStore,
         | 
| 225 236 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 226 237 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 227 238 |  | 
| @@ -246,7 +257,7 @@ contract ClaimService is | |
| 246 257 | 
             
                    }
         | 
| 247 258 |  | 
| 248 259 | 
             
                    claimInfo.closedAt = TimestampLib.blockTimestamp();
         | 
| 249 | 
            -
                     | 
| 260 | 
            +
                    instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
         | 
| 250 261 | 
             
                }
         | 
| 251 262 |  | 
| 252 263 |  | 
| @@ -286,6 +297,8 @@ contract ClaimService is | |
| 286 297 | 
             
                    // nonReentrant() // prevents creating a reinsurance payout in a single tx
         | 
| 287 298 | 
             
                    returns (PayoutId payoutId)
         | 
| 288 299 | 
             
                {
         | 
| 300 | 
            +
                    _checkNftType(policyNftId, POLICY());
         | 
| 301 | 
            +
                    
         | 
| 289 302 | 
             
                    return _createPayout(
         | 
| 290 303 | 
             
                        policyNftId, 
         | 
| 291 304 | 
             
                        claimId, 
         | 
| @@ -303,76 +316,134 @@ contract ClaimService is | |
| 303 316 | 
             
                    virtual
         | 
| 304 317 | 
             
                    // nonReentrant() // prevents creating a reinsurance payout in a single tx
         | 
| 305 318 | 
             
                {
         | 
| 319 | 
            +
                    // checks
         | 
| 306 320 | 
             
                    (
         | 
| 307 | 
            -
                         | 
| 308 | 
            -
                        IInstance instance,
         | 
| 321 | 
            +
                        NftId productNftId,,
         | 
| 322 | 
            +
                        // IInstance instance,
         | 
| 309 323 | 
             
                        InstanceReader instanceReader,
         | 
| 324 | 
            +
                        InstanceStore instanceStore,
         | 
| 310 325 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 311 326 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 312 327 |  | 
| 313 | 
            -
                    //  | 
| 328 | 
            +
                    // check that payout exists and is open
         | 
| 314 329 | 
             
                    IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
         | 
| 330 | 
            +
                    StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
         | 
| 331 | 
            +
                    if(payoutState != EXPECTED()) {
         | 
| 332 | 
            +
                        revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
         | 
| 333 | 
            +
                    }
         | 
| 334 | 
            +
             | 
| 335 | 
            +
                    // check that payout amount does not violate claim amount
         | 
| 336 | 
            +
                    IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, payoutId.toClaimId());
         | 
| 337 | 
            +
                    if(claimInfo.paidAmount + payoutInfo.amount > claimInfo.claimAmount) {
         | 
| 338 | 
            +
                        revert ErrorClaimServicePayoutExceedsClaimAmount(
         | 
| 339 | 
            +
                            policyNftId, 
         | 
| 340 | 
            +
                            payoutId.toClaimId(), 
         | 
| 341 | 
            +
                            claimInfo.claimAmount, 
         | 
| 342 | 
            +
                            claimInfo.paidAmount + payoutInfo.amount);
         | 
| 343 | 
            +
                    }
         | 
| 315 344 |  | 
| 345 | 
            +
                    // effects
         | 
| 316 346 | 
             
                    // update and save payout info with instance
         | 
| 317 347 | 
             
                    payoutInfo.paidAt = TimestampLib.blockTimestamp();
         | 
| 318 | 
            -
                     | 
| 348 | 
            +
                    instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
         | 
| 319 349 |  | 
| 320 | 
            -
                     | 
| 350 | 
            +
                    // update and save claim info with instance
         | 
| 321 351 | 
             
                    Amount payoutAmount = payoutInfo.amount;
         | 
| 322 | 
            -
                     | 
| 323 | 
            -
             | 
| 324 | 
            -
             | 
| 325 | 
            -
             | 
| 326 | 
            -
             | 
| 327 | 
            -
             | 
| 328 | 
            -
             | 
| 329 | 
            -
                         | 
| 330 | 
            -
                         | 
| 331 | 
            -
             | 
| 332 | 
            -
             | 
| 333 | 
            -
             | 
| 334 | 
            -
             | 
| 352 | 
            +
                    {
         | 
| 353 | 
            +
                        ClaimId claimId = payoutId.toClaimId();
         | 
| 354 | 
            +
                        IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 355 | 
            +
                        claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
         | 
| 356 | 
            +
                        claimInfo.openPayoutsCount -= 1;
         | 
| 357 | 
            +
             | 
| 358 | 
            +
                        // check if this payout is closing the linked claim
         | 
| 359 | 
            +
                        // update claim and policy info accordingly
         | 
| 360 | 
            +
                        if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
         | 
| 361 | 
            +
                            claimInfo.closedAt = TimestampLib.blockTimestamp();
         | 
| 362 | 
            +
                            instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
         | 
| 363 | 
            +
             | 
| 364 | 
            +
                            policyInfo.openClaimsCount -= 1;
         | 
| 365 | 
            +
                        } else {
         | 
| 366 | 
            +
                            instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
         | 
| 367 | 
            +
                        }
         | 
| 335 368 | 
             
                    }
         | 
| 336 369 |  | 
| 337 370 | 
             
                    // update and save policy info with instance
         | 
| 338 | 
            -
                    policyInfo.payoutAmount = policyInfo.payoutAmount | 
| 339 | 
            -
                     | 
| 371 | 
            +
                    policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
         | 
| 372 | 
            +
                    instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 340 373 |  | 
| 341 | 
            -
                     | 
| 374 | 
            +
                    emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount);
         | 
| 375 | 
            +
             | 
| 376 | 
            +
                    // effects + interactions (push tokens to beneficiary, product)
         | 
| 377 | 
            +
                    // delegate to pool to update book keeping and moving tokens payout
         | 
| 342 378 | 
             
                    _poolService.processPayout(
         | 
| 343 | 
            -
                         | 
| 344 | 
            -
                         | 
| 379 | 
            +
                        instanceReader,
         | 
| 380 | 
            +
                        instanceStore, 
         | 
| 381 | 
            +
                        policyInfo.productNftId, // product nft id 
         | 
| 345 382 | 
             
                        policyNftId, 
         | 
| 346 | 
            -
                        policyInfo, 
         | 
| 347 | 
            -
                         | 
| 348 | 
            -
             | 
| 349 | 
            -
             | 
| 383 | 
            +
                        policyInfo.bundleNftId, 
         | 
| 384 | 
            +
                        payoutId,
         | 
| 385 | 
            +
                        payoutAmount,
         | 
| 386 | 
            +
                        payoutInfo.beneficiary);
         | 
| 387 | 
            +
                }
         | 
| 388 | 
            +
             | 
| 389 | 
            +
                function cancelPayout(
         | 
| 390 | 
            +
                    NftId policyNftId, 
         | 
| 391 | 
            +
                    PayoutId payoutId
         | 
| 392 | 
            +
                )
         | 
| 393 | 
            +
                    external
         | 
| 394 | 
            +
                    virtual
         | 
| 395 | 
            +
                {
         | 
| 396 | 
            +
                    // checks
         | 
| 350 397 | 
             
                    (
         | 
| 351 | 
            -
                         | 
| 352 | 
            -
                         | 
| 353 | 
            -
                         | 
| 354 | 
            -
             | 
| 355 | 
            -
                         | 
| 356 | 
            -
             | 
| 357 | 
            -
                        policyInfo,
         | 
| 358 | 
            -
                        payoutInfo);
         | 
| 398 | 
            +
                        ,
         | 
| 399 | 
            +
                        IInstance instance,
         | 
| 400 | 
            +
                        InstanceReader instanceReader,
         | 
| 401 | 
            +
                        InstanceStore instanceStore,
         | 
| 402 | 
            +
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 403 | 
            +
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 359 404 |  | 
| 360 | 
            -
                     | 
| 405 | 
            +
                    StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
         | 
| 406 | 
            +
                    if (payoutState != EXPECTED()) {
         | 
| 407 | 
            +
                        revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
         | 
| 408 | 
            +
                    }
         | 
| 361 409 |  | 
| 362 | 
            -
                     | 
| 363 | 
            -
             | 
| 364 | 
            -
             | 
| 365 | 
            -
                        poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
         | 
| 410 | 
            +
                    // effects
         | 
| 411 | 
            +
                    // update and save payout info with instance
         | 
| 412 | 
            +
                    instanceStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
         | 
| 366 413 |  | 
| 367 | 
            -
             | 
| 414 | 
            +
                    {
         | 
| 415 | 
            +
                        ClaimId claimId = payoutId.toClaimId();
         | 
| 416 | 
            +
                        IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 417 | 
            +
                        claimInfo.openPayoutsCount -= 1;
         | 
| 418 | 
            +
                        instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
         | 
| 368 419 | 
             
                    }
         | 
| 369 420 |  | 
| 370 | 
            -
                     | 
| 371 | 
            -
                    _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
         | 
| 421 | 
            +
                    emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
         | 
| 372 422 | 
             
                }
         | 
| 373 423 |  | 
| 374 424 | 
             
                // internal functions
         | 
| 375 425 |  | 
| 426 | 
            +
                function _checkClaimAmount(
         | 
| 427 | 
            +
                    NftId policyNftId,
         | 
| 428 | 
            +
                    IPolicy.PolicyInfo memory policyInfo,
         | 
| 429 | 
            +
                    Amount claimAmount
         | 
| 430 | 
            +
                )
         | 
| 431 | 
            +
                    internal
         | 
| 432 | 
            +
                    pure
         | 
| 433 | 
            +
                {
         | 
| 434 | 
            +
                    // check claim amount > 0
         | 
| 435 | 
            +
                    if (claimAmount.eqz()) {
         | 
| 436 | 
            +
                        revert ErrorClaimServiceClaimAmountIsZero(policyNftId);
         | 
| 437 | 
            +
                    }
         | 
| 438 | 
            +
             | 
| 439 | 
            +
                    // check policy including this claim is still within sum insured
         | 
| 440 | 
            +
                    if(policyInfo.claimAmount + claimAmount > policyInfo.sumInsuredAmount) {
         | 
| 441 | 
            +
                        revert ErrorClaimServiceClaimExceedsSumInsured(
         | 
| 442 | 
            +
                            policyNftId, 
         | 
| 443 | 
            +
                            policyInfo.sumInsuredAmount,
         | 
| 444 | 
            +
                            policyInfo.payoutAmount + claimAmount);
         | 
| 445 | 
            +
                    }
         | 
| 446 | 
            +
                }
         | 
| 376 447 |  | 
| 377 448 | 
             
                function _createPayout(
         | 
| 378 449 | 
             
                    NftId policyNftId, 
         | 
| @@ -385,28 +456,40 @@ contract ClaimService is | |
| 385 456 | 
             
                    virtual
         | 
| 386 457 | 
             
                    returns (PayoutId payoutId)
         | 
| 387 458 | 
             
                {
         | 
| 459 | 
            +
                    // checks
         | 
| 388 460 | 
             
                    (
         | 
| 389 | 
            -
                         | 
| 390 | 
            -
                        IInstance instance,
         | 
| 461 | 
            +
                        ,,
         | 
| 391 462 | 
             
                        InstanceReader instanceReader,
         | 
| 392 | 
            -
                         | 
| 463 | 
            +
                        InstanceStore instanceStore,
         | 
| 464 | 
            +
                        // IPolicy.PolicyInfo memory policyInfo
         | 
| 393 465 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 394 466 |  | 
| 395 467 | 
             
                    IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 396 | 
            -
                    StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
         | 
| 397 468 |  | 
| 398 | 
            -
                     | 
| 399 | 
            -
             | 
| 400 | 
            -
             | 
| 469 | 
            +
                    {
         | 
| 470 | 
            +
                        // check claim state
         | 
| 471 | 
            +
                        StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
         | 
| 472 | 
            +
                        if (claimState != CONFIRMED()) {
         | 
| 473 | 
            +
                            revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
         | 
| 474 | 
            +
                        }
         | 
| 401 475 |  | 
| 402 | 
            -
             | 
| 476 | 
            +
                        // check total payout amount remains within claim limit
         | 
| 477 | 
            +
                        Amount newPaidAmount = claimInfo.paidAmount + amount;
         | 
| 478 | 
            +
                        if (newPaidAmount > claimInfo.claimAmount) {
         | 
| 479 | 
            +
                            revert ErrorClaimServicePayoutExceedsClaimAmount(
         | 
| 480 | 
            +
                                policyNftId, claimId, claimInfo.claimAmount, newPaidAmount);
         | 
| 481 | 
            +
                        }
         | 
| 482 | 
            +
                    }
         | 
| 483 | 
            +
             | 
| 484 | 
            +
                    // effects
         | 
| 403 485 | 
             
                    // create payout info with instance
         | 
| 404 486 | 
             
                    uint24 payoutNo = claimInfo.payoutsCount + 1;
         | 
| 405 487 | 
             
                    payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
         | 
| 406 488 | 
             
                    if (beneficiary == address(0)) {
         | 
| 407 489 | 
             
                        beneficiary = getRegistry().ownerOf(policyNftId);
         | 
| 408 490 | 
             
                    }
         | 
| 409 | 
            -
             | 
| 491 | 
            +
             | 
| 492 | 
            +
                    instanceStore.createPayout(
         | 
| 410 493 | 
             
                        policyNftId, 
         | 
| 411 494 | 
             
                        payoutId, 
         | 
| 412 495 | 
             
                        IPolicy.PayoutInfo({
         | 
| @@ -419,54 +502,12 @@ contract ClaimService is | |
| 419 502 | 
             
                    // update and save claim info with instance
         | 
| 420 503 | 
             
                    claimInfo.payoutsCount += 1;
         | 
| 421 504 | 
             
                    claimInfo.openPayoutsCount += 1;
         | 
| 422 | 
            -
                     | 
| 423 | 
            -
             | 
| 424 | 
            -
                    // update and save policy info with instance
         | 
| 425 | 
            -
                    policyInfo.payoutAmount.add(amount);
         | 
| 426 | 
            -
                    instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 505 | 
            +
                    instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
         | 
| 427 506 |  | 
| 428 507 | 
             
                    emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
         | 
| 429 508 | 
             
                }
         | 
| 430 509 |  | 
| 431 510 |  | 
| 432 | 
            -
                function _calculatePayoutAmount(
         | 
| 433 | 
            -
                    InstanceReader instanceReader,
         | 
| 434 | 
            -
                    NftId policyNftId,
         | 
| 435 | 
            -
                    IPolicy.PolicyInfo memory policyInfo,
         | 
| 436 | 
            -
                    IPolicy.PayoutInfo memory payoutInfo
         | 
| 437 | 
            -
                )
         | 
| 438 | 
            -
                    internal
         | 
| 439 | 
            -
                    returns (
         | 
| 440 | 
            -
                        Amount netPayoutAmount,
         | 
| 441 | 
            -
                        Amount processingFeeAmount,
         | 
| 442 | 
            -
                        address beneficiary
         | 
| 443 | 
            -
                    )
         | 
| 444 | 
            -
                {
         | 
| 445 | 
            -
                    Amount payoutAmount = payoutInfo.amount;
         | 
| 446 | 
            -
             | 
| 447 | 
            -
                    if(payoutAmount.gtz()) {
         | 
| 448 | 
            -
                        NftId productNftId = policyInfo.productNftId;
         | 
| 449 | 
            -
             | 
| 450 | 
            -
                        // get pool component info from policy or product
         | 
| 451 | 
            -
                        NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
         | 
| 452 | 
            -
                        IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
         | 
| 453 | 
            -
             | 
| 454 | 
            -
                        netPayoutAmount = payoutAmount;
         | 
| 455 | 
            -
             | 
| 456 | 
            -
                        if (payoutInfo.beneficiary == address(0)) {
         | 
| 457 | 
            -
                            beneficiary = getRegistry().ownerOf(policyNftId);
         | 
| 458 | 
            -
                        } else { 
         | 
| 459 | 
            -
                            beneficiary = payoutInfo.beneficiary;
         | 
| 460 | 
            -
                        }
         | 
| 461 | 
            -
             | 
| 462 | 
            -
                        IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
         | 
| 463 | 
            -
                        if(FeeLib.gtz(productInfo.processingFee)) {
         | 
| 464 | 
            -
                            // TODO calculate and set net payout and processing fees
         | 
| 465 | 
            -
                        }
         | 
| 466 | 
            -
                    }
         | 
| 467 | 
            -
                }
         | 
| 468 | 
            -
             | 
| 469 | 
            -
             | 
| 470 511 | 
             
                function _verifyCallerWithPolicy(
         | 
| 471 512 | 
             
                    NftId policyNftId
         | 
| 472 513 | 
             
                )
         | 
| @@ -477,11 +518,13 @@ contract ClaimService is | |
| 477 518 | 
             
                        NftId productNftId,
         | 
| 478 519 | 
             
                        IInstance instance,
         | 
| 479 520 | 
             
                        InstanceReader instanceReader,
         | 
| 521 | 
            +
                        InstanceStore instanceStore,
         | 
| 480 522 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 481 523 | 
             
                    )
         | 
| 482 524 | 
             
                {
         | 
| 483 | 
            -
                    (productNftId | 
| 525 | 
            +
                    (productNftId, instance) = _getAndVerifyActiveComponent(PRODUCT());
         | 
| 484 526 | 
             
                    instanceReader = instance.getInstanceReader();
         | 
| 527 | 
            +
                    instanceStore = instance.getInstanceStore();
         | 
| 485 528 |  | 
| 486 529 | 
             
                    // check caller(product) policy match
         | 
| 487 530 | 
             
                    policyInfo = instanceReader.getPolicyInfo(policyNftId);
         | 
| @@ -492,6 +535,29 @@ contract ClaimService is | |
| 492 535 | 
             
                    }
         | 
| 493 536 | 
             
                }
         | 
| 494 537 |  | 
| 538 | 
            +
             | 
| 539 | 
            +
                function _getAndVerifyActiveComponent(ObjectType expectedType) 
         | 
| 540 | 
            +
                    internal 
         | 
| 541 | 
            +
                    view 
         | 
| 542 | 
            +
                    returns (
         | 
| 543 | 
            +
                        NftId productNftId,
         | 
| 544 | 
            +
                        IInstance instance
         | 
| 545 | 
            +
                    )
         | 
| 546 | 
            +
                {
         | 
| 547 | 
            +
                    (
         | 
| 548 | 
            +
                        IRegistry.ObjectInfo memory info,
         | 
| 549 | 
            +
                        address instanceAddress
         | 
| 550 | 
            +
                    ) = ContractLib.getAndVerifyComponent(
         | 
| 551 | 
            +
                        getRegistry(),
         | 
| 552 | 
            +
                        msg.sender, // caller
         | 
| 553 | 
            +
                        PRODUCT(),
         | 
| 554 | 
            +
                        true); // isActive 
         | 
| 555 | 
            +
             | 
| 556 | 
            +
                    // get component nft id and instance
         | 
| 557 | 
            +
                    productNftId = info.nftId;
         | 
| 558 | 
            +
                    instance = IInstance(instanceAddress);
         | 
| 559 | 
            +
                }
         | 
| 560 | 
            +
             | 
| 495 561 | 
             
                function _verifyClaim(
         | 
| 496 562 | 
             
                    InstanceReader instanceReader,
         | 
| 497 563 | 
             
                    NftId policyNftId, 
         | 
| @@ -545,22 +611,7 @@ contract ClaimService is | |
| 545 611 | 
             
                    }
         | 
| 546 612 | 
             
                }
         | 
| 547 613 |  | 
| 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 | 
            -
             | 
| 614 | 
            +
                // TODO: move to policy helper lib or something
         | 
| 564 615 | 
             
                function _getPolicyHolder(NftId policyNftId)
         | 
| 565 616 | 
             
                    internal 
         | 
| 566 617 | 
             
                    view 
         | 
| @@ -17,7 +17,7 @@ contract ClaimServiceManager is ProxyManager { | |
| 17 17 | 
             
                ) 
         | 
| 18 18 | 
             
                {
         | 
| 19 19 | 
             
                    ClaimService svc = new ClaimService{salt: salt}();
         | 
| 20 | 
            -
                    bytes memory data = abi.encode( | 
| 20 | 
            +
                    bytes memory data = abi.encode(authority, registry);
         | 
| 21 21 | 
             
                    IVersionable versionable = initialize(
         | 
| 22 22 | 
             
                        registry,
         | 
| 23 23 | 
             
                        address(svc), 
         | 
| @@ -15,8 +15,11 @@ import {Seconds} from "../type/Seconds.sol"; | |
| 15 15 | 
             
            /// only product components may call transaction functions
         | 
| 16 16 | 
             
            interface IApplicationService is IService {
         | 
| 17 17 |  | 
| 18 | 
            -
                 | 
| 19 | 
            -
                error  | 
| 18 | 
            +
                // _checkLinkedApplicationParameters
         | 
| 19 | 
            +
                error ErrorApplicationServiceRiskUnknown(RiskId riskId, NftId productNftId);
         | 
| 20 | 
            +
                error ErrorApplicationServiceRiskPaused(RiskId riskId, NftId productNftId);
         | 
| 21 | 
            +
                error ErrorApplicationServiceBundleUnknown(NftId bundleNftId, NftId poolNftId);
         | 
| 22 | 
            +
                error ErrorApplicationServiceBundleLocked(NftId bundleNftId, NftId poolNftId);
         | 
| 20 23 |  | 
| 21 24 | 
             
                /// @dev creates a new application based on the specified attributes
         | 
| 22 25 | 
             
                /// may only be called by a product component
         | 
| @@ -19,7 +19,6 @@ import {Fee} from "../type/Fee.sol"; | |
| 19 19 | 
             
            interface IClaimService is
         | 
| 20 20 | 
             
                IService
         | 
| 21 21 | 
             
            {
         | 
| 22 | 
            -
             | 
| 23 22 | 
             
                event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
         | 
| 24 23 | 
             
                event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
         | 
| 25 24 | 
             
                event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
         | 
| @@ -27,11 +26,14 @@ interface IClaimService is | |
| 27 26 | 
             
                event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
         | 
| 28 27 |  | 
| 29 28 | 
             
                event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
         | 
| 30 | 
            -
                event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount | 
| 29 | 
            +
                event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount);
         | 
| 30 | 
            +
                event LogClaimServicePayoutCancelled(NftId policyNftId, PayoutId payoutId);
         | 
| 31 | 
            +
             | 
| 31 32 | 
             
                error ErrorClaimServiceBeneficiarySet(NftId policyNftId, PayoutId payoutId, address beneficiary);
         | 
| 32 33 |  | 
| 33 34 | 
             
                error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
         | 
| 34 35 | 
             
                error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
         | 
| 36 | 
            +
                error ErrorClaimServiceClaimAmountIsZero(NftId policyNftId);
         | 
| 35 37 | 
             
                error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
         | 
| 36 38 | 
             
                error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
         | 
| 37 39 | 
             
                error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
         | 
| @@ -40,6 +42,10 @@ interface IClaimService is | |
| 40 42 | 
             
                error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
         | 
| 41 43 | 
             
                error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
         | 
| 42 44 |  | 
| 45 | 
            +
                error ErrorClaimServiceClaimNotConfirmed(NftId policyNftId, ClaimId claimId, StateId actualState);
         | 
| 46 | 
            +
                error ErrorClaimServicePayoutExceedsClaimAmount(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount totalPayoutAmount);
         | 
| 47 | 
            +
                error ErrorClaimServicePayoutNotExpected(NftId policyNftId, PayoutId payoutId, StateId actualState);
         | 
| 48 | 
            +
             | 
| 43 49 | 
             
                /// @dev create a new claim for the specified policy
         | 
| 44 50 | 
             
                /// returns the id of the newly created claim
         | 
| 45 51 | 
             
                /// function can only be called by product, policy needs to match with calling product
         | 
| @@ -120,4 +126,10 @@ interface IClaimService is | |
| 120 126 | 
             
                    NftId policyNftId, 
         | 
| 121 127 | 
             
                    PayoutId payoutId
         | 
| 122 128 | 
             
                ) external;
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                /// @dev cancels the specified payout. no tokens are moved, payout is set to cancelled. 
         | 
| 131 | 
            +
                function cancelPayout(
         | 
| 132 | 
            +
                    NftId policyNftId, 
         | 
| 133 | 
            +
                    PayoutId payoutId
         | 
| 134 | 
            +
                ) external;
         | 
| 123 135 | 
             
            }
         |