@etherisc/gif-next 0.0.2-e9c5694-914 → 0.0.2-ea09fbf-195
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 +103 -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 +2 -2
 - package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +37 -5
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
 - 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 +101 -164
 - package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
 - 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 +137 -129
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
 - package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
 - package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
 - package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -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 +94 -47
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
 - package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
 - package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -56
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +239 -92
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
 - 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 +2 -2
 - 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/ObjectSetHelper.sol/ObjectSetHelperLib.dbg.json +4 -0
 - package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.json +168 -0
 - package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
 - package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
 - package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
 - package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
 - 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 +44 -58
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
 - package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
 - package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
 - package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
 - package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
 - package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
 - package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
 - package/artifacts/contracts/product/Product.sol/Product.json +163 -175
 - package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
 - package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
 - 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 +31 -2
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
 - 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/Registry.sol/Registry.dbg.json +1 -1
 - package/artifacts/contracts/registry/Registry.sol/Registry.json +69 -40
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
 - package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
 - package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +310 -52
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
 - 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 +57 -75
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
 - 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 +44 -44
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
 - 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/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 +120 -1
 - package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
 - package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
 - package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
 - 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 +57 -89
 - package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
 - package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.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 +2 -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 +118 -62
 - 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 +27 -16
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -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 +62 -80
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
 - package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
 - package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
 - 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 +3 -3
 - 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/SelectorSetLib.dbg.json +1 -1
 - 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 +18 -2
 - 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 +136 -73
 - package/contracts/authorization/AccessManagerCloneable.sol +136 -3
 - package/contracts/authorization/IAccessAdmin.sol +6 -3
 - package/contracts/distribution/BasicDistribution.sol +6 -6
 - package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
 - package/contracts/distribution/Distribution.sol +32 -30
 - package/contracts/distribution/DistributionService.sol +34 -32
 - package/contracts/distribution/DistributionServiceManager.sol +1 -1
 - package/contracts/distribution/IDistributionService.sol +5 -6
 - package/contracts/examples/fire/FirePool.sol +22 -5
 - package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
 - package/contracts/examples/fire/FireProduct.sol +31 -8
 - package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
 - package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
 - package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
 - package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
 - package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
 - package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
 - package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
 - package/contracts/instance/BundleSet.sol +42 -38
 - package/contracts/instance/IInstance.sol +8 -8
 - package/contracts/instance/IInstanceService.sol +9 -9
 - package/contracts/instance/Instance.sol +20 -17
 - package/contracts/instance/InstanceAdmin.sol +96 -47
 - package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
 - package/contracts/instance/InstanceReader.sol +108 -7
 - package/contracts/instance/InstanceService.sol +73 -82
 - 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/ObjectSetHelper.sol +30 -0
 - package/contracts/instance/module/IComponents.sol +4 -4
 - package/contracts/instance/module/IPolicy.sol +2 -1
 - package/contracts/instance/module/IRisk.sol +3 -0
 - package/contracts/oracle/Oracle.sol +1 -1
 - package/contracts/oracle/OracleService.sol +92 -73
 - package/contracts/oracle/OracleServiceManager.sol +1 -1
 - package/contracts/pool/BasicPool.sol +24 -3
 - package/contracts/pool/BasicPoolAuthorization.sol +12 -1
 - package/contracts/pool/BundleService.sol +26 -94
 - package/contracts/pool/BundleServiceManager.sol +1 -1
 - package/contracts/pool/IBundleService.sol +2 -24
 - package/contracts/pool/IPoolComponent.sol +1 -7
 - package/contracts/pool/IPoolService.sol +12 -26
 - package/contracts/pool/Pool.sol +112 -102
 - package/contracts/pool/PoolService.sol +171 -100
 - package/contracts/pool/PoolServiceManager.sol +1 -1
 - package/contracts/product/ApplicationService.sol +15 -15
 - package/contracts/product/ApplicationServiceManager.sol +1 -1
 - package/contracts/product/BasicProduct.sol +9 -11
 - package/contracts/product/BasicProductAuthorization.sol +1 -2
 - package/contracts/product/ClaimService.sol +147 -51
 - package/contracts/product/ClaimServiceManager.sol +1 -1
 - package/contracts/product/IApplicationService.sol +5 -2
 - package/contracts/product/IClaimService.sol +13 -0
 - package/contracts/product/IPolicyService.sol +17 -7
 - package/contracts/product/IProductComponent.sol +4 -1
 - package/contracts/product/PolicyService.sol +244 -199
 - package/contracts/product/PolicyServiceManager.sol +1 -1
 - package/contracts/product/PricingService.sol +23 -19
 - package/contracts/product/PricingServiceManager.sol +3 -3
 - package/contracts/product/Product.sol +47 -39
 - package/contracts/product/RiskService.sol +78 -23
 - package/contracts/product/RiskServiceManager.sol +1 -1
 - package/contracts/registry/ChainNft.sol +4 -2
 - package/contracts/registry/IRegistry.sol +8 -15
 - package/contracts/registry/IRelease.sol +26 -0
 - package/contracts/registry/Registry.sol +12 -3
 - package/contracts/registry/RegistryAdmin.sol +121 -225
 - package/contracts/registry/RegistryService.sol +3 -3
 - 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 +129 -119
 - package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
 - package/contracts/registry/TokenRegistry.sol +6 -8
 - package/contracts/shared/Component.sol +59 -98
 - package/contracts/shared/ComponentService.sol +206 -251
 - package/contracts/shared/ComponentServiceManager.sol +1 -1
 - package/contracts/shared/ComponentVerifyingService.sol +15 -13
 - package/contracts/shared/ContractLib.sol +223 -9
 - package/contracts/shared/IComponent.sol +4 -17
 - package/contracts/shared/IComponentService.sol +20 -24
 - package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
 - package/contracts/shared/IRegisterable.sol +15 -4
 - package/contracts/shared/IService.sol +3 -5
 - package/contracts/shared/InstanceLinkedComponent.sol +2 -18
 - package/contracts/shared/NftOwnable.sol +4 -4
 - package/contracts/shared/PolicyHolder.sol +1 -1
 - package/contracts/shared/Registerable.sol +44 -20
 - package/contracts/shared/RegistryLinked.sol +7 -13
 - package/contracts/shared/Service.sol +8 -27
 - package/contracts/shared/TokenHandler.sol +316 -66
 - package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
 - package/contracts/staking/IStaking.sol +9 -4
 - package/contracts/staking/Staking.sol +62 -33
 - package/contracts/staking/StakingService.sol +41 -9
 - 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 +32 -18
 - package/contracts/type/RiskId.sol +23 -6
 - package/contracts/type/RoleId.sol +5 -2
 - 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 +1 -1
 - package/package.json +3 -3
 - package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
 - package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
 - package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
 - package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
 - package/contracts/authorization/ReleaseAccessManager.sol +0 -38
 
| 
         @@ -1,19 +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 
     | 
    
         
            -
            import {InstanceStore} from "../instance/InstanceStore.sol";
         
     | 
| 
       17 
4 
     | 
    
         
             
            import {IClaimService} from "./IClaimService.sol";
         
     | 
| 
       18 
5 
     | 
    
         
             
            import {IComponents} from "../instance/module/IComponents.sol";
         
     | 
| 
       19 
6 
     | 
    
         
             
            import {IInstance} from "../instance/IInstance.sol";
         
     | 
| 
         @@ -22,10 +9,25 @@ import {IPolicyHolder} from "../shared/IPolicyHolder.sol"; 
     | 
|
| 
       22 
9 
     | 
    
         
             
            import {IPoolComponent} from "../pool/IPoolComponent.sol";
         
     | 
| 
       23 
10 
     | 
    
         
             
            import {IPolicyService} from "../product/IPolicyService.sol";
         
     | 
| 
       24 
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";
         
     | 
| 
       25 
27 
     | 
    
         | 
| 
       26 
28 
     | 
    
         | 
| 
       27 
29 
     | 
    
         
             
            contract ClaimService is 
         
     | 
| 
       28 
     | 
    
         
            -
                 
     | 
| 
      
 30 
     | 
    
         
            +
                Service, 
         
     | 
| 
       29 
31 
     | 
    
         
             
                IClaimService
         
     | 
| 
       30 
32 
     | 
    
         
             
            {
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
         @@ -41,11 +43,11 @@ contract ClaimService is 
     | 
|
| 
       41 
43 
     | 
    
         
             
                    initializer()
         
     | 
| 
       42 
44 
     | 
    
         
             
                {
         
     | 
| 
       43 
45 
     | 
    
         
             
                    (
         
     | 
| 
       44 
     | 
    
         
            -
                        address  
     | 
| 
       45 
     | 
    
         
            -
                        address  
     | 
| 
      
 46 
     | 
    
         
            +
                        address authority,
         
     | 
| 
      
 47 
     | 
    
         
            +
                        address registry
         
     | 
| 
       46 
48 
     | 
    
         
             
                    ) = abi.decode(data, (address, address));
         
     | 
| 
       47 
49 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                     
     | 
| 
      
 50 
     | 
    
         
            +
                    __Service_init(authority, registry, owner);
         
     | 
| 
       49 
51 
     | 
    
         | 
| 
       50 
52 
     | 
    
         
             
                    _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
         
     | 
| 
       51 
53 
     | 
    
         
             
                    _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
         
     | 
| 
         @@ -61,10 +63,10 @@ contract ClaimService is 
     | 
|
| 
       61 
63 
     | 
    
         
             
                    external
         
     | 
| 
       62 
64 
     | 
    
         
             
                    virtual
         
     | 
| 
       63 
65 
     | 
    
         
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         
     | 
| 
      
 66 
     | 
    
         
            +
                    restricted()
         
     | 
| 
       64 
67 
     | 
    
         
             
                    returns (ClaimId claimId)
         
     | 
| 
       65 
68 
     | 
    
         
             
                {
         
     | 
| 
       66 
     | 
    
         
            -
                     
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
      
 69 
     | 
    
         
            +
                    // checks
         
     | 
| 
       68 
70 
     | 
    
         
             
                    (
         
     | 
| 
       69 
71 
     | 
    
         
             
                        ,
         
     | 
| 
       70 
72 
     | 
    
         
             
                        IInstance instance,,
         
     | 
| 
         @@ -77,15 +79,9 @@ contract ClaimService is 
     | 
|
| 
       77 
79 
     | 
    
         
             
                        revert ErrorClaimServicePolicyNotOpen(policyNftId);
         
     | 
| 
       78 
80 
     | 
    
         
             
                    }
         
     | 
| 
       79 
81 
     | 
    
         | 
| 
       80 
     | 
    
         
            -
                     
     | 
| 
       81 
     | 
    
         
            -
                    // check policy including this claim is still within sum insured
         
     | 
| 
       82 
     | 
    
         
            -
                    if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
         
     | 
| 
       83 
     | 
    
         
            -
                        revert ErrorClaimServiceClaimExceedsSumInsured(
         
     | 
| 
       84 
     | 
    
         
            -
                            policyNftId, 
         
     | 
| 
       85 
     | 
    
         
            -
                            policyInfo.sumInsuredAmount,
         
     | 
| 
       86 
     | 
    
         
            -
                            AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
         
     | 
| 
       87 
     | 
    
         
            -
                    }
         
     | 
| 
      
 82 
     | 
    
         
            +
                    _checkClaimAmount(policyNftId, policyInfo, claimAmount);
         
     | 
| 
       88 
83 
     | 
    
         | 
| 
      
 84 
     | 
    
         
            +
                    // effects
         
     | 
| 
       89 
85 
     | 
    
         
             
                    // create new claim
         
     | 
| 
       90 
86 
     | 
    
         
             
                    claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
         
     | 
| 
       91 
87 
     | 
    
         
             
                    instanceStore.createClaim(
         
     | 
| 
         @@ -120,6 +116,7 @@ contract ClaimService is 
     | 
|
| 
       120 
116 
     | 
    
         
             
                    virtual
         
     | 
| 
       121 
117 
     | 
    
         
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         
     | 
| 
       122 
118 
     | 
    
         
             
                {
         
     | 
| 
      
 119 
     | 
    
         
            +
                    // checks
         
     | 
| 
       123 
120 
     | 
    
         
             
                    _checkNftType(policyNftId, POLICY());
         
     | 
| 
       124 
121 
     | 
    
         | 
| 
       125 
122 
     | 
    
         
             
                    (
         
     | 
| 
         @@ -130,8 +127,9 @@ contract ClaimService is 
     | 
|
| 
       130 
127 
     | 
    
         
             
                        IPolicy.PolicyInfo memory policyInfo
         
     | 
| 
       131 
128 
     | 
    
         
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         
     | 
| 
       132 
129 
     | 
    
         | 
| 
       133 
     | 
    
         
            -
                     
     | 
| 
      
 130 
     | 
    
         
            +
                    _checkClaimAmount(policyNftId, policyInfo, confirmedAmount);
         
     | 
| 
       134 
131 
     | 
    
         | 
| 
      
 132 
     | 
    
         
            +
                    // effects
         
     | 
| 
       135 
133 
     | 
    
         
             
                    // check/update claim info
         
     | 
| 
       136 
134 
     | 
    
         
             
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         
     | 
| 
       137 
135 
     | 
    
         
             
                    claimInfo.claimAmount = confirmedAmount;
         
     | 
| 
         @@ -149,6 +147,7 @@ contract ClaimService is 
     | 
|
| 
       149 
147 
     | 
    
         | 
| 
       150 
148 
     | 
    
         
             
                    emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
         
     | 
| 
       151 
149 
     | 
    
         | 
| 
      
 150 
     | 
    
         
            +
                    // interactions
         
     | 
| 
       152 
151 
     | 
    
         
             
                    // callback to pool if applicable
         
     | 
| 
       153 
152 
     | 
    
         
             
                    _processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
         
     | 
| 
       154 
153 
     | 
    
         | 
| 
         @@ -190,7 +189,6 @@ contract ClaimService is 
     | 
|
| 
       190 
189 
     | 
    
         
             
                }
         
     | 
| 
       191 
190 
     | 
    
         | 
| 
       192 
191 
     | 
    
         | 
| 
       193 
     | 
    
         
            -
                // TODO add test case
         
     | 
| 
       194 
192 
     | 
    
         
             
                function revoke(
         
     | 
| 
       195 
193 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
       196 
194 
     | 
    
         
             
                    ClaimId claimId
         
     | 
| 
         @@ -198,9 +196,7 @@ contract ClaimService is 
     | 
|
| 
       198 
196 
     | 
    
         
             
                    external
         
     | 
| 
       199 
197 
     | 
    
         
             
                    virtual
         
     | 
| 
       200 
198 
     | 
    
         
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         
     | 
| 
       201 
     | 
    
         
            -
                {
         
     | 
| 
       202 
     | 
    
         
            -
                    _checkNftType(policyNftId, POLICY());
         
     | 
| 
       203 
     | 
    
         
            -
                    
         
     | 
| 
      
 199 
     | 
    
         
            +
                {        
         
     | 
| 
       204 
200 
     | 
    
         
             
                    (
         
     | 
| 
       205 
201 
     | 
    
         
             
                        ,
         
     | 
| 
       206 
202 
     | 
    
         
             
                        IInstance instance,
         
     | 
| 
         @@ -277,8 +273,6 @@ contract ClaimService is 
     | 
|
| 
       277 
273 
     | 
    
         
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         
     | 
| 
       278 
274 
     | 
    
         
             
                    returns (PayoutId payoutId)
         
     | 
| 
       279 
275 
     | 
    
         
             
                {
         
     | 
| 
       280 
     | 
    
         
            -
                    _checkNftType(policyNftId, POLICY());
         
     | 
| 
       281 
     | 
    
         
            -
                    
         
     | 
| 
       282 
276 
     | 
    
         
             
                    if (beneficiary == address(0)) {
         
     | 
| 
       283 
277 
     | 
    
         
             
                        revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
         
     | 
| 
       284 
278 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -322,8 +316,7 @@ contract ClaimService is 
     | 
|
| 
       322 
316 
     | 
    
         
             
                    virtual
         
     | 
| 
       323 
317 
     | 
    
         
             
                    // nonReentrant() // prevents creating a reinsurance payout in a single tx
         
     | 
| 
       324 
318 
     | 
    
         
             
                {
         
     | 
| 
       325 
     | 
    
         
            -
                     
     | 
| 
       326 
     | 
    
         
            -
                    
         
     | 
| 
      
 319 
     | 
    
         
            +
                    // checks
         
     | 
| 
       327 
320 
     | 
    
         
             
                    (
         
     | 
| 
       328 
321 
     | 
    
         
             
                        ,
         
     | 
| 
       329 
322 
     | 
    
         
             
                        IInstance instance,
         
     | 
| 
         @@ -332,9 +325,24 @@ contract ClaimService is 
     | 
|
| 
       332 
325 
     | 
    
         
             
                        IPolicy.PolicyInfo memory policyInfo
         
     | 
| 
       333 
326 
     | 
    
         
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         
     | 
| 
       334 
327 
     | 
    
         | 
| 
       335 
     | 
    
         
            -
                    //  
     | 
| 
      
 328 
     | 
    
         
            +
                    // check that payout exists and is open
         
     | 
| 
       336 
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 
     | 
    
         
            +
                    }
         
     | 
| 
       337 
344 
     | 
    
         | 
| 
      
 345 
     | 
    
         
            +
                    // effects
         
     | 
| 
       338 
346 
     | 
    
         
             
                    // update and save payout info with instance
         
     | 
| 
       339 
347 
     | 
    
         
             
                    payoutInfo.paidAt = TimestampLib.blockTimestamp();
         
     | 
| 
       340 
348 
     | 
    
         
             
                    instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
         
     | 
| 
         @@ -360,7 +368,7 @@ contract ClaimService is 
     | 
|
| 
       360 
368 
     | 
    
         
             
                    }
         
     | 
| 
       361 
369 
     | 
    
         | 
| 
       362 
370 
     | 
    
         
             
                    // update and save policy info with instance
         
     | 
| 
       363 
     | 
    
         
            -
                    policyInfo.payoutAmount = policyInfo.payoutAmount 
     | 
| 
      
 371 
     | 
    
         
            +
                    policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
         
     | 
| 
       364 
372 
     | 
    
         
             
                    instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         
     | 
| 
       365 
373 
     | 
    
         | 
| 
       366 
374 
     | 
    
         
             
                    // inform pool about payout
         
     | 
| 
         @@ -388,7 +396,9 @@ contract ClaimService is 
     | 
|
| 
       388 
396 
     | 
    
         
             
                        {
         
     | 
| 
       389 
397 
     | 
    
         
             
                            NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
         
     | 
| 
       390 
398 
     | 
    
         
             
                            IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
         
     | 
| 
       391 
     | 
    
         
            -
                            poolInfo.tokenHandler. 
     | 
| 
      
 399 
     | 
    
         
            +
                            poolInfo.tokenHandler.pushToken(
         
     | 
| 
      
 400 
     | 
    
         
            +
                                beneficiary, 
         
     | 
| 
      
 401 
     | 
    
         
            +
                                netPayoutAmount);
         
     | 
| 
       392 
402 
     | 
    
         | 
| 
       393 
403 
     | 
    
         
             
                            // TODO add 2nd token tx if processingFeeAmount > 0
         
     | 
| 
       394 
404 
     | 
    
         
             
                        }
         
     | 
| 
         @@ -398,8 +408,64 @@ contract ClaimService is 
     | 
|
| 
       398 
408 
     | 
    
         
             
                    }
         
     | 
| 
       399 
409 
     | 
    
         
             
                }
         
     | 
| 
       400 
410 
     | 
    
         | 
| 
      
 411 
     | 
    
         
            +
                function cancelPayout(
         
     | 
| 
      
 412 
     | 
    
         
            +
                    NftId policyNftId, 
         
     | 
| 
      
 413 
     | 
    
         
            +
                    PayoutId payoutId
         
     | 
| 
      
 414 
     | 
    
         
            +
                )
         
     | 
| 
      
 415 
     | 
    
         
            +
                    external
         
     | 
| 
      
 416 
     | 
    
         
            +
                    virtual
         
     | 
| 
      
 417 
     | 
    
         
            +
                {
         
     | 
| 
      
 418 
     | 
    
         
            +
                    // checks
         
     | 
| 
      
 419 
     | 
    
         
            +
                    (
         
     | 
| 
      
 420 
     | 
    
         
            +
                        ,
         
     | 
| 
      
 421 
     | 
    
         
            +
                        IInstance instance,
         
     | 
| 
      
 422 
     | 
    
         
            +
                        InstanceReader instanceReader,
         
     | 
| 
      
 423 
     | 
    
         
            +
                        InstanceStore instanceStore,
         
     | 
| 
      
 424 
     | 
    
         
            +
                        IPolicy.PolicyInfo memory policyInfo
         
     | 
| 
      
 425 
     | 
    
         
            +
                    ) = _verifyCallerWithPolicy(policyNftId);
         
     | 
| 
      
 426 
     | 
    
         
            +
             
     | 
| 
      
 427 
     | 
    
         
            +
                    StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
         
     | 
| 
      
 428 
     | 
    
         
            +
                    if (payoutState != EXPECTED()) {
         
     | 
| 
      
 429 
     | 
    
         
            +
                        revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
         
     | 
| 
      
 430 
     | 
    
         
            +
                    }
         
     | 
| 
      
 431 
     | 
    
         
            +
             
     | 
| 
      
 432 
     | 
    
         
            +
                    // effects
         
     | 
| 
      
 433 
     | 
    
         
            +
                    // update and save payout info with instance
         
     | 
| 
      
 434 
     | 
    
         
            +
                    instanceStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
         
     | 
| 
      
 435 
     | 
    
         
            +
             
     | 
| 
      
 436 
     | 
    
         
            +
                    {
         
     | 
| 
      
 437 
     | 
    
         
            +
                        ClaimId claimId = payoutId.toClaimId();
         
     | 
| 
      
 438 
     | 
    
         
            +
                        IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         
     | 
| 
      
 439 
     | 
    
         
            +
                        claimInfo.openPayoutsCount -= 1;
         
     | 
| 
      
 440 
     | 
    
         
            +
                        instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
         
     | 
| 
      
 441 
     | 
    
         
            +
                    }
         
     | 
| 
      
 442 
     | 
    
         
            +
             
     | 
| 
      
 443 
     | 
    
         
            +
                    emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
         
     | 
| 
      
 444 
     | 
    
         
            +
                }
         
     | 
| 
      
 445 
     | 
    
         
            +
             
     | 
| 
       401 
446 
     | 
    
         
             
                // internal functions
         
     | 
| 
       402 
447 
     | 
    
         | 
| 
      
 448 
     | 
    
         
            +
                function _checkClaimAmount(
         
     | 
| 
      
 449 
     | 
    
         
            +
                    NftId policyNftId,
         
     | 
| 
      
 450 
     | 
    
         
            +
                    IPolicy.PolicyInfo memory policyInfo,
         
     | 
| 
      
 451 
     | 
    
         
            +
                    Amount claimAmount
         
     | 
| 
      
 452 
     | 
    
         
            +
                )
         
     | 
| 
      
 453 
     | 
    
         
            +
                    internal
         
     | 
| 
      
 454 
     | 
    
         
            +
                    pure
         
     | 
| 
      
 455 
     | 
    
         
            +
                {
         
     | 
| 
      
 456 
     | 
    
         
            +
                    // check claim amount > 0
         
     | 
| 
      
 457 
     | 
    
         
            +
                    if (claimAmount.eqz()) {
         
     | 
| 
      
 458 
     | 
    
         
            +
                        revert ErrorClaimServiceClaimAmountIsZero(policyNftId);
         
     | 
| 
      
 459 
     | 
    
         
            +
                    }
         
     | 
| 
      
 460 
     | 
    
         
            +
             
     | 
| 
      
 461 
     | 
    
         
            +
                    // check policy including this claim is still within sum insured
         
     | 
| 
      
 462 
     | 
    
         
            +
                    if(policyInfo.claimAmount + claimAmount > policyInfo.sumInsuredAmount) {
         
     | 
| 
      
 463 
     | 
    
         
            +
                        revert ErrorClaimServiceClaimExceedsSumInsured(
         
     | 
| 
      
 464 
     | 
    
         
            +
                            policyNftId, 
         
     | 
| 
      
 465 
     | 
    
         
            +
                            policyInfo.sumInsuredAmount,
         
     | 
| 
      
 466 
     | 
    
         
            +
                            policyInfo.payoutAmount + claimAmount);
         
     | 
| 
      
 467 
     | 
    
         
            +
                    }
         
     | 
| 
      
 468 
     | 
    
         
            +
                }
         
     | 
| 
       403 
469 
     | 
    
         | 
| 
       404 
470 
     | 
    
         
             
                function _createPayout(
         
     | 
| 
       405 
471 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
         @@ -412,6 +478,7 @@ contract ClaimService is 
     | 
|
| 
       412 
478 
     | 
    
         
             
                    virtual
         
     | 
| 
       413 
479 
     | 
    
         
             
                    returns (PayoutId payoutId)
         
     | 
| 
       414 
480 
     | 
    
         
             
                {
         
     | 
| 
      
 481 
     | 
    
         
            +
                    // checks
         
     | 
| 
       415 
482 
     | 
    
         
             
                    (
         
     | 
| 
       416 
483 
     | 
    
         
             
                        ,
         
     | 
| 
       417 
484 
     | 
    
         
             
                        ,
         
     | 
| 
         @@ -421,13 +488,23 @@ contract ClaimService is 
     | 
|
| 
       421 
488 
     | 
    
         
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         
     | 
| 
       422 
489 
     | 
    
         | 
| 
       423 
490 
     | 
    
         
             
                    IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         
     | 
| 
       424 
     | 
    
         
            -
                    StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
         
     | 
| 
       425 
491 
     | 
    
         | 
| 
       426 
     | 
    
         
            -
                     
     | 
| 
       427 
     | 
    
         
            -
             
     | 
| 
       428 
     | 
    
         
            -
             
     | 
| 
      
 492 
     | 
    
         
            +
                    {
         
     | 
| 
      
 493 
     | 
    
         
            +
                        // check claim state
         
     | 
| 
      
 494 
     | 
    
         
            +
                        StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
         
     | 
| 
      
 495 
     | 
    
         
            +
                        if (claimState != CONFIRMED()) {
         
     | 
| 
      
 496 
     | 
    
         
            +
                            revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
         
     | 
| 
      
 497 
     | 
    
         
            +
                        }
         
     | 
| 
      
 498 
     | 
    
         
            +
             
     | 
| 
      
 499 
     | 
    
         
            +
                        // check total payout amount remains within claim limit
         
     | 
| 
      
 500 
     | 
    
         
            +
                        Amount newPaidAmount = claimInfo.paidAmount + amount;
         
     | 
| 
      
 501 
     | 
    
         
            +
                        if (newPaidAmount > claimInfo.claimAmount) {
         
     | 
| 
      
 502 
     | 
    
         
            +
                            revert ErrorClaimServicePayoutExceedsClaimAmount(
         
     | 
| 
      
 503 
     | 
    
         
            +
                                policyNftId, claimId, claimInfo.claimAmount, newPaidAmount);
         
     | 
| 
      
 504 
     | 
    
         
            +
                        }
         
     | 
| 
      
 505 
     | 
    
         
            +
                    }
         
     | 
| 
       429 
506 
     | 
    
         | 
| 
       430 
     | 
    
         
            -
                    //  
     | 
| 
      
 507 
     | 
    
         
            +
                    // effects
         
     | 
| 
       431 
508 
     | 
    
         
             
                    // create payout info with instance
         
     | 
| 
       432 
509 
     | 
    
         
             
                    uint24 payoutNo = claimInfo.payoutsCount + 1;
         
     | 
| 
       433 
510 
     | 
    
         
             
                    payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
         
     | 
| 
         @@ -450,10 +527,6 @@ contract ClaimService is 
     | 
|
| 
       450 
527 
     | 
    
         
             
                    claimInfo.openPayoutsCount += 1;
         
     | 
| 
       451 
528 
     | 
    
         
             
                    instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
         
     | 
| 
       452 
529 
     | 
    
         | 
| 
       453 
     | 
    
         
            -
                    // update and save policy info with instance
         
     | 
| 
       454 
     | 
    
         
            -
                    policyInfo.payoutAmount.add(amount);
         
     | 
| 
       455 
     | 
    
         
            -
                    instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         
     | 
| 
       456 
     | 
    
         
            -
             
     | 
| 
       457 
530 
     | 
    
         
             
                    emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
         
     | 
| 
       458 
531 
     | 
    
         
             
                }
         
     | 
| 
       459 
532 
     | 
    
         | 
| 
         @@ -465,6 +538,7 @@ contract ClaimService is 
     | 
|
| 
       465 
538 
     | 
    
         
             
                    IPolicy.PayoutInfo memory payoutInfo
         
     | 
| 
       466 
539 
     | 
    
         
             
                )
         
     | 
| 
       467 
540 
     | 
    
         
             
                    internal
         
     | 
| 
      
 541 
     | 
    
         
            +
                    view
         
     | 
| 
       468 
542 
     | 
    
         
             
                    returns (
         
     | 
| 
       469 
543 
     | 
    
         
             
                        Amount netPayoutAmount,
         
     | 
| 
       470 
544 
     | 
    
         
             
                        Amount processingFeeAmount,
         
     | 
| 
         @@ -488,8 +562,8 @@ contract ClaimService is 
     | 
|
| 
       488 
562 
     | 
    
         
             
                            beneficiary = payoutInfo.beneficiary;
         
     | 
| 
       489 
563 
     | 
    
         
             
                        }
         
     | 
| 
       490 
564 
     | 
    
         | 
| 
       491 
     | 
    
         
            -
                        IComponents. 
     | 
| 
       492 
     | 
    
         
            -
                        if(FeeLib.gtz( 
     | 
| 
      
 565 
     | 
    
         
            +
                        IComponents.FeeInfo memory feeInfo = instanceReader.getFeeInfo(productNftId);
         
     | 
| 
      
 566 
     | 
    
         
            +
                        if(FeeLib.gtz(feeInfo.processingFee)) {
         
     | 
| 
       493 
567 
     | 
    
         
             
                            // TODO calculate and set net payout and processing fees
         
     | 
| 
       494 
568 
     | 
    
         
             
                        }
         
     | 
| 
       495 
569 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -510,7 +584,7 @@ contract ClaimService is 
     | 
|
| 
       510 
584 
     | 
    
         
             
                        IPolicy.PolicyInfo memory policyInfo
         
     | 
| 
       511 
585 
     | 
    
         
             
                    )
         
     | 
| 
       512 
586 
     | 
    
         
             
                {
         
     | 
| 
       513 
     | 
    
         
            -
                    (productNftId 
     | 
| 
      
 587 
     | 
    
         
            +
                    (productNftId, instance) = _getAndVerifyActiveComponent(PRODUCT());
         
     | 
| 
       514 
588 
     | 
    
         
             
                    instanceReader = instance.getInstanceReader();
         
     | 
| 
       515 
589 
     | 
    
         
             
                    instanceStore = instance.getInstanceStore();
         
     | 
| 
       516 
590 
     | 
    
         | 
| 
         @@ -523,6 +597,28 @@ contract ClaimService is 
     | 
|
| 
       523 
597 
     | 
    
         
             
                    }
         
     | 
| 
       524 
598 
     | 
    
         
             
                }
         
     | 
| 
       525 
599 
     | 
    
         | 
| 
      
 600 
     | 
    
         
            +
                function _getAndVerifyActiveComponent(ObjectType expectedType) 
         
     | 
| 
      
 601 
     | 
    
         
            +
                    internal 
         
     | 
| 
      
 602 
     | 
    
         
            +
                    view 
         
     | 
| 
      
 603 
     | 
    
         
            +
                    returns (
         
     | 
| 
      
 604 
     | 
    
         
            +
                        NftId productNftId,
         
     | 
| 
      
 605 
     | 
    
         
            +
                        IInstance instance
         
     | 
| 
      
 606 
     | 
    
         
            +
                    )
         
     | 
| 
      
 607 
     | 
    
         
            +
                {
         
     | 
| 
      
 608 
     | 
    
         
            +
                    (
         
     | 
| 
      
 609 
     | 
    
         
            +
                        IRegistry.ObjectInfo memory info,
         
     | 
| 
      
 610 
     | 
    
         
            +
                        address instanceAddress
         
     | 
| 
      
 611 
     | 
    
         
            +
                    ) = ContractLib.getAndVerifyComponent(
         
     | 
| 
      
 612 
     | 
    
         
            +
                        getRegistry(),
         
     | 
| 
      
 613 
     | 
    
         
            +
                        msg.sender, // caller
         
     | 
| 
      
 614 
     | 
    
         
            +
                        PRODUCT(),
         
     | 
| 
      
 615 
     | 
    
         
            +
                        true); // isActive 
         
     | 
| 
      
 616 
     | 
    
         
            +
             
     | 
| 
      
 617 
     | 
    
         
            +
                    // get component nft id and instance
         
     | 
| 
      
 618 
     | 
    
         
            +
                    productNftId = info.nftId;
         
     | 
| 
      
 619 
     | 
    
         
            +
                    instance = IInstance(instanceAddress);
         
     | 
| 
      
 620 
     | 
    
         
            +
                }
         
     | 
| 
      
 621 
     | 
    
         
            +
             
     | 
| 
       526 
622 
     | 
    
         
             
                function _verifyClaim(
         
     | 
| 
       527 
623 
     | 
    
         
             
                    InstanceReader instanceReader,
         
     | 
| 
       528 
624 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
         @@ -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
         
     | 
| 
         @@ -28,10 +28,13 @@ interface IClaimService is 
     | 
|
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
                event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
         
     | 
| 
       30 
30 
     | 
    
         
             
                event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
         
     | 
| 
      
 31 
     | 
    
         
            +
                event LogClaimServicePayoutCancelled(NftId policyNftId, PayoutId payoutId);
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       31 
33 
     | 
    
         
             
                error ErrorClaimServiceBeneficiarySet(NftId policyNftId, PayoutId payoutId, address beneficiary);
         
     | 
| 
       32 
34 
     | 
    
         | 
| 
       33 
35 
     | 
    
         
             
                error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
         
     | 
| 
       34 
36 
     | 
    
         
             
                error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
         
     | 
| 
      
 37 
     | 
    
         
            +
                error ErrorClaimServiceClaimAmountIsZero(NftId policyNftId);
         
     | 
| 
       35 
38 
     | 
    
         
             
                error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
         
     | 
| 
       36 
39 
     | 
    
         
             
                error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
         
     | 
| 
       37 
40 
     | 
    
         
             
                error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
         
     | 
| 
         @@ -40,6 +43,10 @@ interface IClaimService is 
     | 
|
| 
       40 
43 
     | 
    
         
             
                error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
         
     | 
| 
       41 
44 
     | 
    
         
             
                error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
         
     | 
| 
       42 
45 
     | 
    
         | 
| 
      
 46 
     | 
    
         
            +
                error ErrorClaimServiceClaimNotConfirmed(NftId policyNftId, ClaimId claimId, StateId actualState);
         
     | 
| 
      
 47 
     | 
    
         
            +
                error ErrorClaimServicePayoutExceedsClaimAmount(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount totalPayoutAmount);
         
     | 
| 
      
 48 
     | 
    
         
            +
                error ErrorClaimServicePayoutNotExpected(NftId policyNftId, PayoutId payoutId, StateId actualState);
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
       43 
50 
     | 
    
         
             
                /// @dev create a new claim for the specified policy
         
     | 
| 
       44 
51 
     | 
    
         
             
                /// returns the id of the newly created claim
         
     | 
| 
       45 
52 
     | 
    
         
             
                /// function can only be called by product, policy needs to match with calling product
         
     | 
| 
         @@ -120,4 +127,10 @@ interface IClaimService is 
     | 
|
| 
       120 
127 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
       121 
128 
     | 
    
         
             
                    PayoutId payoutId
         
     | 
| 
       122 
129 
     | 
    
         
             
                ) external;
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                /// @dev cancels the specified payout. no tokens are moved, payout is set to cancelled. 
         
     | 
| 
      
 132 
     | 
    
         
            +
                function cancelPayout(
         
     | 
| 
      
 133 
     | 
    
         
            +
                    NftId policyNftId, 
         
     | 
| 
      
 134 
     | 
    
         
            +
                    PayoutId payoutId
         
     | 
| 
      
 135 
     | 
    
         
            +
                ) external;
         
     | 
| 
       123 
136 
     | 
    
         
             
            }
         
     | 
| 
         @@ -5,6 +5,7 @@ import {IService} from "../shared/IService.sol"; 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       7 
7 
     | 
    
         
             
            import {IInstance} from "../instance/IInstance.sol";
         
     | 
| 
      
 8 
     | 
    
         
            +
            import {InstanceReader} from "../instance/InstanceReader.sol";
         
     | 
| 
       8 
9 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       9 
10 
     | 
    
         
             
            import {StateId} from "../type/StateId.sol";
         
     | 
| 
       10 
11 
     | 
    
         
             
            import {Timestamp} from "../type/Timestamp.sol";
         
     | 
| 
         @@ -28,8 +29,9 @@ interface IPolicyService is IService { 
     | 
|
| 
       28 
29 
     | 
    
         | 
| 
       29 
30 
     | 
    
         
             
                error ErrorPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
         
     | 
| 
       30 
31 
     | 
    
         
             
                error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId);
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                error  
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                error ErrorPolicyServicePolicyNotCloseable(NftId policyNftId);
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       33 
35 
     | 
    
         
             
                error ErrorPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
         
     | 
| 
       34 
36 
     | 
    
         
             
                error ErrorPolicyServicePremiumNotPaid(NftId policyNftId, Amount premiumAmount);
         
     | 
| 
       35 
37 
     | 
    
         
             
                error ErrorPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
         
     | 
| 
         @@ -49,7 +51,9 @@ interface IPolicyService is IService { 
     | 
|
| 
       49 
51 
     | 
    
         
             
                function createPolicy(
         
     | 
| 
       50 
52 
     | 
    
         
             
                    NftId applicationNftId,
         
     | 
| 
       51 
53 
     | 
    
         
             
                    Timestamp activateAt
         
     | 
| 
       52 
     | 
    
         
            -
                ) 
     | 
| 
      
 54 
     | 
    
         
            +
                )
         
     | 
| 
      
 55 
     | 
    
         
            +
                    external
         
     | 
| 
      
 56 
     | 
    
         
            +
                    returns (Amount premiumAmount);
         
     | 
| 
       53 
57 
     | 
    
         | 
| 
       54 
58 
     | 
    
         
             
                /// @dev declines an application represented by {policyNftId}
         
     | 
| 
       55 
59 
     | 
    
         
             
                /// an application can only be declined in applied state
         
     | 
| 
         @@ -63,18 +67,24 @@ interface IPolicyService is IService { 
     | 
|
| 
       63 
67 
     | 
    
         
             
                /// to activate a policy it needs to be in underwritten state
         
     | 
| 
       64 
68 
     | 
    
         
             
                function activate(NftId policyNftId, Timestamp activateAt) external;
         
     | 
| 
       65 
69 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                /// @dev  
     | 
| 
      
 70 
     | 
    
         
            +
                /// @dev Expires the specified policy and sets the expiry date in the policy metadata. 
         
     | 
| 
      
 71 
     | 
    
         
            +
                /// Function consumers are products.
         
     | 
| 
      
 72 
     | 
    
         
            +
                /// If expiry date is set to 0, then the earliest possible expiry date (current blocktime) is set
         
     | 
| 
       67 
73 
     | 
    
         
             
                /// to expire a policy it must be in active state, policies may be expired even when the predefined expiry date is still in the future
         
     | 
| 
       68 
74 
     | 
    
         
             
                /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
         
     | 
| 
       69 
75 
     | 
    
         
             
                /// this function can only be called by a product. the policy needs to match with the calling product
         
     | 
| 
       70 
76 
     | 
    
         
             
                /// @return expiredAt the effective expiry date
         
     | 
| 
       71 
77 
     | 
    
         
             
                function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
         
     | 
| 
       72 
78 
     | 
    
         | 
| 
       73 
     | 
    
         
            -
                 
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                /// @dev closes the specified policy and sets the closed data in the policy metadata
         
     | 
| 
      
 79 
     | 
    
         
            +
                /// @dev Closes the specified policy and sets the closed data in the policy metadata
         
     | 
| 
       76 
80 
     | 
    
         
             
                /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
         
     | 
| 
       77 
81 
     | 
    
         
             
                /// this function can only be called by a product. the policy needs to match with the calling product
         
     | 
| 
       78 
82 
     | 
    
         
             
                function close(NftId policyNftId) external;
         
     | 
| 
       79 
83 
     | 
    
         | 
| 
      
 84 
     | 
    
         
            +
                /// @dev Expires the specified policy and sets the expiry date in the policy metadata. 
         
     | 
| 
      
 85 
     | 
    
         
            +
                /// Function consumers is claim service.
         
     | 
| 
      
 86 
     | 
    
         
            +
                function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                /// @dev Returns true iff policy is closeable
         
     | 
| 
      
 89 
     | 
    
         
            +
                function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId) external view returns (bool isCloseable);
         
     | 
| 
       80 
90 
     | 
    
         
             
            }
         
     | 
| 
         @@ -53,7 +53,10 @@ interface IProductComponent is 
     | 
|
| 
       53 
53 
     | 
    
         
             
                ) external view returns (Amount netPremiumAmount);    
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
55 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
                /// @dev returns initial  
     | 
| 
      
 56 
     | 
    
         
            +
                /// @dev returns initial product specific infos 
         
     | 
| 
       57 
57 
     | 
    
         
             
                function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                /// @dev returns initial fee infos
         
     | 
| 
      
 60 
     | 
    
         
            +
                function getInitialFeeInfo() external view returns (IComponents.FeeInfo memory info);
         
     | 
| 
       58 
61 
     | 
    
         | 
| 
       59 
62 
     | 
    
         
             
            }
         
     |