@etherisc/gif-next 0.0.2-f1b01e0-214 → 0.0.2-f1e6957-384
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 +76 -341
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +100 -32
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +52 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +367 -126
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1546 -211
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +261 -59
- 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 +258 -82
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +97 -14
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +52 -27
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +264 -64
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +20 -11
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -139
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +160 -78
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +19 -10
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +228 -15
- 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 +81 -52
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +263 -63
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +109 -68
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +263 -63
- 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 +74 -33
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +263 -63
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +35 -26
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +85 -60
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +263 -63
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +264 -78
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +263 -63
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +359 -33
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +297 -3
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +407 -97
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +756 -392
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +231 -75
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +492 -424
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +323 -29
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -42
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1444 -2133
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- 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 +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- 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 +25 -16
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +277 -60
- 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 +19 -10
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -10
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +83 -38
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +37 -36
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +263 -63
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +294 -117
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +180 -27
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +19 -10
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +19 -10
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +88 -22
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +324 -65
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +216 -59
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +113 -43
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -10
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +263 -63
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -10
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +508 -18
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +93 -72
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -50
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +19 -10
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -43
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- 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 +71 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +537 -300
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +330 -71
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +41 -12
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +543 -226
- 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 +167 -103
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -10
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -174
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -64
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +76 -41
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -10
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +84 -105
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -10
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- 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 +19 -10
- 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 +21 -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 +19 -0
- 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 +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1384 -128
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +94 -114
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1472 -185
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +73 -72
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -64
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +293 -149
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +128 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -46
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1617 -817
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +140 -78
- 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 +2 -2
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- 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 +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
- 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 +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/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/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +15 -3
- package/contracts/accounting/IAccountingService.sol +2 -0
- package/contracts/authorization/AccessAdmin.sol +292 -317
- package/contracts/authorization/AccessAdminLib.sol +517 -22
- package/contracts/authorization/AccessManagerCloneable.sol +0 -18
- package/contracts/authorization/Authorization.sol +64 -239
- package/contracts/authorization/IAccess.sol +23 -14
- package/contracts/authorization/IAccessAdmin.sol +25 -53
- package/contracts/authorization/IAuthorization.sol +3 -57
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +3 -4
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +9 -8
- package/contracts/distribution/DistributionService.sol +98 -35
- package/contracts/distribution/IDistributionComponent.sol +3 -1
- package/contracts/distribution/IDistributionService.sol +20 -8
- package/contracts/examples/fire/FireProduct.sol +6 -6
- package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +55 -5
- package/contracts/instance/IInstanceService.sol +37 -6
- package/contracts/instance/Instance.sol +103 -56
- package/contracts/instance/InstanceAdmin.sol +151 -294
- package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
- package/contracts/instance/InstanceReader.sol +350 -394
- package/contracts/instance/InstanceService.sol +180 -125
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/instance/module/IComponents.sol +0 -2
- package/contracts/oracle/BasicOracle.sol +2 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/Oracle.sol +4 -6
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -16
- package/contracts/pool/BasicPoolAuthorization.sol +10 -5
- package/contracts/pool/BundleService.sol +34 -43
- package/contracts/pool/IBundleService.sol +14 -13
- package/contracts/pool/IPoolService.sol +7 -2
- package/contracts/pool/Pool.sol +6 -18
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +40 -181
- package/contracts/product/ApplicationService.sol +64 -11
- package/contracts/product/BasicProduct.sol +2 -3
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +99 -105
- package/contracts/product/IApplicationService.sol +21 -2
- package/contracts/product/IClaimService.sol +5 -4
- package/contracts/product/IPolicyService.sol +9 -2
- package/contracts/product/IRiskService.sol +18 -3
- package/contracts/product/PolicyService.sol +40 -59
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +22 -25
- package/contracts/product/Product.sol +40 -16
- package/contracts/product/RiskService.sol +50 -15
- package/contracts/registry/IRegistry.sol +11 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +15 -9
- package/contracts/registry/RegistryAdmin.sol +33 -118
- package/contracts/registry/RegistryAuthorization.sol +139 -69
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +52 -106
- package/contracts/registry/ReleaseRegistry.sol +20 -12
- package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +8 -8
- package/contracts/shared/ComponentService.sol +245 -262
- package/contracts/shared/ContractLib.sol +106 -75
- package/contracts/shared/IComponent.sol +1 -1
- package/contracts/shared/IComponentService.sol +12 -13
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InstanceLinkedComponent.sol +6 -9
- package/contracts/shared/NftOwnable.sol +3 -1
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Service.sol +6 -4
- package/contracts/staking/IStaking.sol +261 -70
- package/contracts/staking/IStakingService.sol +39 -84
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +468 -217
- package/contracts/staking/StakingLib.sol +38 -124
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +62 -71
- package/contracts/staking/StakingService.sol +42 -185
- package/contracts/staking/StakingServiceManager.sol +1 -0
- package/contracts/staking/StakingStore.sol +1093 -331
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +16 -3
- package/contracts/type/RoleId.sol +57 -59
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -2
- package/contracts/type/UFixed.sol +1 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
| @@ -2,7 +2,6 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {IClaimService} from "./IClaimService.sol";
         | 
| 5 | 
            -
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 6 5 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 7 6 | 
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 8 7 | 
             
            import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
         | 
| @@ -14,12 +13,12 @@ import {IRegistry} from "../registry/IRegistry.sol"; | |
| 14 13 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 15 14 | 
             
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         | 
| 16 15 | 
             
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 17 | 
            -
            import {FeeLib} from "../type/Fee.sol";
         | 
| 18 16 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 19 17 | 
             
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 20 18 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 21 | 
            -
            import {ObjectType,  | 
| 19 | 
            +
            import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
         | 
| 22 20 | 
             
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         | 
| 21 | 
            +
            import {ProductStore} from "../instance/ProductStore.sol";
         | 
| 23 22 | 
             
            import {Service} from "../shared/Service.sol";
         | 
| 24 23 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 25 24 | 
             
            import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CANCELLED, CONFIRMED, CLOSED, EXPECTED, PAID} from "../type/StateId.sol";
         | 
| @@ -68,14 +67,13 @@ contract ClaimService is | |
| 68 67 | 
             
                {
         | 
| 69 68 | 
             
                    // checks
         | 
| 70 69 | 
             
                    (
         | 
| 71 | 
            -
                         | 
| 72 | 
            -
                        IInstance  | 
| 73 | 
            -
                        InstanceStore instanceStore,
         | 
| 70 | 
            +
                        ,,
         | 
| 71 | 
            +
                        IInstance.InstanceContracts memory instanceContracts,
         | 
| 74 72 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 75 73 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 76 74 |  | 
| 77 75 | 
             
                    // check policy is in its active period
         | 
| 78 | 
            -
                    if(policyInfo.activatedAt.eqz() || TimestampLib. | 
| 76 | 
            +
                    if(policyInfo.activatedAt.eqz() || TimestampLib.current() >= policyInfo.expiredAt) {
         | 
| 79 77 | 
             
                        revert ErrorClaimServicePolicyNotOpen(policyNftId);
         | 
| 80 78 | 
             
                    }
         | 
| 81 79 |  | 
| @@ -84,7 +82,7 @@ contract ClaimService is | |
| 84 82 | 
             
                    // effects
         | 
| 85 83 | 
             
                    // create new claim
         | 
| 86 84 | 
             
                    claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
         | 
| 87 | 
            -
                     | 
| 85 | 
            +
                    instanceContracts.productStore.createClaim(
         | 
| 88 86 | 
             
                        policyNftId, 
         | 
| 89 87 | 
             
                        claimId, 
         | 
| 90 88 | 
             
                        IPolicy.ClaimInfo({
         | 
| @@ -100,7 +98,7 @@ contract ClaimService is | |
| 100 98 | 
             
                    // policy claim amount is only updated when claim is confirmed
         | 
| 101 99 | 
             
                    policyInfo.claimsCount += 1;
         | 
| 102 100 | 
             
                    policyInfo.openClaimsCount += 1;
         | 
| 103 | 
            -
                     | 
| 101 | 
            +
                    instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 104 102 |  | 
| 105 103 | 
             
                    emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
         | 
| 106 104 | 
             
                }
         | 
| @@ -114,6 +112,7 @@ contract ClaimService is | |
| 114 112 | 
             
                )
         | 
| 115 113 | 
             
                    external
         | 
| 116 114 | 
             
                    virtual
         | 
| 115 | 
            +
                    restricted()
         | 
| 117 116 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 118 117 | 
             
                {
         | 
| 119 118 | 
             
                    // checks
         | 
| @@ -122,8 +121,7 @@ contract ClaimService is | |
| 122 121 | 
             
                    (
         | 
| 123 122 | 
             
                        NftId productNftId,
         | 
| 124 123 | 
             
                        IInstance instance,
         | 
| 125 | 
            -
                         | 
| 126 | 
            -
                        InstanceStore instanceStore,
         | 
| 124 | 
            +
                        IInstance.InstanceContracts memory instanceContracts,
         | 
| 127 125 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 128 126 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 129 127 |  | 
| @@ -131,25 +129,25 @@ contract ClaimService is | |
| 131 129 |  | 
| 132 130 | 
             
                    // effects
         | 
| 133 131 | 
             
                    // check/update claim info
         | 
| 134 | 
            -
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 132 | 
            +
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceContracts.instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 135 133 | 
             
                    claimInfo.claimAmount = confirmedAmount;
         | 
| 136 134 | 
             
                    claimInfo.processData = data;
         | 
| 137 | 
            -
                     | 
| 135 | 
            +
                    instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
         | 
| 138 136 |  | 
| 139 137 | 
             
                    // update and save policy info with instance
         | 
| 140 138 | 
             
                    policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
         | 
| 141 | 
            -
                     | 
| 139 | 
            +
                    instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 142 140 |  | 
| 143 141 | 
             
                    // should policy still be active it needs to become expired
         | 
| 144 142 | 
             
                    if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
         | 
| 145 | 
            -
                        _policyService.expirePolicy(instance, policyNftId, TimestampLib. | 
| 143 | 
            +
                        _policyService.expirePolicy(instance, policyNftId, TimestampLib.current());
         | 
| 146 144 | 
             
                    }
         | 
| 147 145 |  | 
| 148 146 | 
             
                    emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
         | 
| 149 147 |  | 
| 150 148 | 
             
                    // interactions
         | 
| 151 149 | 
             
                    // callback to pool if applicable
         | 
| 152 | 
            -
                    _processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
         | 
| 150 | 
            +
                    _processConfirmedClaimByPool(instanceContracts.instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
         | 
| 153 151 |  | 
| 154 152 | 
             
                    // callback to policy holder if applicable
         | 
| 155 153 | 
             
                    _policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
         | 
| @@ -163,27 +161,26 @@ contract ClaimService is | |
| 163 161 | 
             
                )
         | 
| 164 162 | 
             
                    external
         | 
| 165 163 | 
             
                    virtual
         | 
| 164 | 
            +
                    restricted()
         | 
| 166 165 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 167 166 | 
             
                {
         | 
| 168 167 | 
             
                    _checkNftType(policyNftId, POLICY());
         | 
| 169 168 |  | 
| 170 169 | 
             
                    (
         | 
| 171 | 
            -
                         | 
| 172 | 
            -
                        IInstance  | 
| 173 | 
            -
                        InstanceReader instanceReader,
         | 
| 174 | 
            -
                        InstanceStore instanceStore,
         | 
| 170 | 
            +
                        ,,
         | 
| 171 | 
            +
                        IInstance.InstanceContracts memory instanceContracts,
         | 
| 175 172 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 176 173 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 177 174 |  | 
| 178 175 | 
             
                    // check/update claim info
         | 
| 179 | 
            -
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 176 | 
            +
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceContracts.instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 180 177 | 
             
                    claimInfo.processData = data;
         | 
| 181 | 
            -
                    claimInfo.closedAt = TimestampLib. | 
| 182 | 
            -
                     | 
| 178 | 
            +
                    claimInfo.closedAt = TimestampLib.current();
         | 
| 179 | 
            +
                    instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
         | 
| 183 180 |  | 
| 184 181 | 
             
                    // update and save policy info with instance
         | 
| 185 182 | 
             
                    policyInfo.openClaimsCount -= 1;
         | 
| 186 | 
            -
                     | 
| 183 | 
            +
                    instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 187 184 |  | 
| 188 185 | 
             
                    emit LogClaimServiceClaimDeclined(policyNftId, claimId);
         | 
| 189 186 | 
             
                }
         | 
| @@ -195,49 +192,46 @@ contract ClaimService is | |
| 195 192 | 
             
                )
         | 
| 196 193 | 
             
                    external
         | 
| 197 194 | 
             
                    virtual
         | 
| 195 | 
            +
                    restricted()
         | 
| 198 196 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 199 197 | 
             
                {        
         | 
| 200 198 | 
             
                    (
         | 
| 201 | 
            -
                         | 
| 202 | 
            -
                        IInstance  | 
| 203 | 
            -
                        InstanceReader instanceReader,
         | 
| 204 | 
            -
                        InstanceStore instanceStore,
         | 
| 199 | 
            +
                        ,,
         | 
| 200 | 
            +
                        IInstance.InstanceContracts memory instanceContracts,
         | 
| 205 201 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 206 202 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 207 203 |  | 
| 208 204 | 
             
                    // check/update claim info
         | 
| 209 | 
            -
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 210 | 
            -
                    claimInfo.closedAt = TimestampLib. | 
| 211 | 
            -
                     | 
| 205 | 
            +
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceContracts.instanceReader, policyNftId, claimId, SUBMITTED());
         | 
| 206 | 
            +
                    claimInfo.closedAt = TimestampLib.current();
         | 
| 207 | 
            +
                    instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
         | 
| 212 208 |  | 
| 213 209 | 
             
                    // update and save policy info with instance
         | 
| 214 210 | 
             
                    policyInfo.openClaimsCount -= 1;
         | 
| 215 | 
            -
                     | 
| 211 | 
            +
                    instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 216 212 |  | 
| 217 213 | 
             
                    emit LogClaimServiceClaimRevoked(policyNftId, claimId);
         | 
| 218 214 | 
             
                }
         | 
| 219 215 |  | 
| 220 216 |  | 
| 221 | 
            -
                function  | 
| 217 | 
            +
                function cancelConfirmedClaim(
         | 
| 222 218 | 
             
                    NftId policyNftId, 
         | 
| 223 219 | 
             
                    ClaimId claimId
         | 
| 224 220 | 
             
                )
         | 
| 225 221 | 
             
                    external
         | 
| 226 222 | 
             
                    virtual
         | 
| 223 | 
            +
                    restricted()
         | 
| 227 224 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 228 225 | 
             
                {
         | 
| 229 226 | 
             
                    _checkNftType(policyNftId, POLICY());
         | 
| 230 227 |  | 
| 231 228 | 
             
                    (
         | 
| 232 | 
            -
                         | 
| 233 | 
            -
                        IInstance  | 
| 234 | 
            -
                        InstanceReader instanceReader,
         | 
| 235 | 
            -
                        InstanceStore instanceStore,
         | 
| 236 | 
            -
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 229 | 
            +
                        ,,
         | 
| 230 | 
            +
                        IInstance.InstanceContracts memory instanceContracts,
         | 
| 237 231 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 238 232 |  | 
| 239 233 | 
             
                    // check/update claim info
         | 
| 240 | 
            -
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, CONFIRMED());
         | 
| 234 | 
            +
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceContracts.instanceReader, policyNftId, claimId, CONFIRMED());
         | 
| 241 235 |  | 
| 242 236 | 
             
                    // check claim has no open payouts
         | 
| 243 237 | 
             
                    if(claimInfo.openPayoutsCount > 0) {
         | 
| @@ -247,17 +241,10 @@ contract ClaimService is | |
| 247 241 | 
             
                            claimInfo.openPayoutsCount);
         | 
| 248 242 | 
             
                    }
         | 
| 249 243 |  | 
| 250 | 
            -
                     | 
| 251 | 
            -
                     | 
| 252 | 
            -
                        revert ErrorClaimServiceClaimWithMissingPayouts(
         | 
| 253 | 
            -
                            policyNftId, 
         | 
| 254 | 
            -
                            claimId, 
         | 
| 255 | 
            -
                            claimInfo.claimAmount,
         | 
| 256 | 
            -
                            claimInfo.paidAmount);
         | 
| 257 | 
            -
                    }
         | 
| 244 | 
            +
                    claimInfo.closedAt = TimestampLib.current();
         | 
| 245 | 
            +
                    instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, CANCELLED());
         | 
| 258 246 |  | 
| 259 | 
            -
                     | 
| 260 | 
            -
                    instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
         | 
| 247 | 
            +
                    emit LogClaimServiceClaimCancelled(policyNftId, claimId);
         | 
| 261 248 | 
             
                }
         | 
| 262 249 |  | 
| 263 250 |  | 
| @@ -270,6 +257,7 @@ contract ClaimService is | |
| 270 257 | 
             
                )
         | 
| 271 258 | 
             
                    external
         | 
| 272 259 | 
             
                    virtual
         | 
| 260 | 
            +
                    restricted()
         | 
| 273 261 | 
             
                    // nonReentrant() // prevents creating a reinsurance claim in a single tx
         | 
| 274 262 | 
             
                    returns (PayoutId payoutId)
         | 
| 275 263 | 
             
                {
         | 
| @@ -294,6 +282,7 @@ contract ClaimService is | |
| 294 282 | 
             
                )
         | 
| 295 283 | 
             
                    external
         | 
| 296 284 | 
             
                    virtual
         | 
| 285 | 
            +
                    restricted()
         | 
| 297 286 | 
             
                    // nonReentrant() // prevents creating a reinsurance payout in a single tx
         | 
| 298 287 | 
             
                    returns (PayoutId payoutId)
         | 
| 299 288 | 
             
                {
         | 
| @@ -314,76 +303,82 @@ contract ClaimService is | |
| 314 303 | 
             
                )
         | 
| 315 304 | 
             
                    external
         | 
| 316 305 | 
             
                    virtual
         | 
| 306 | 
            +
                    restricted()
         | 
| 317 307 | 
             
                    // nonReentrant() // prevents creating a reinsurance payout in a single tx
         | 
| 308 | 
            +
                    returns (Amount netPayoutAmount, Amount processingFeeAmount)
         | 
| 318 309 | 
             
                {
         | 
| 319 310 | 
             
                    // checks
         | 
| 320 311 | 
             
                    (
         | 
| 321 | 
            -
                         | 
| 322 | 
            -
                         | 
| 323 | 
            -
                        InstanceReader instanceReader,
         | 
| 324 | 
            -
                        InstanceStore instanceStore,
         | 
| 312 | 
            +
                        ,,
         | 
| 313 | 
            +
                        IInstance.InstanceContracts memory instanceContracts,
         | 
| 325 314 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 326 315 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 327 316 |  | 
| 328 | 
            -
                     | 
| 329 | 
            -
                     | 
| 330 | 
            -
                     | 
| 331 | 
            -
                     | 
| 332 | 
            -
             | 
| 333 | 
            -
             | 
| 317 | 
            +
                    IPolicy.ClaimInfo memory claimInfo;
         | 
| 318 | 
            +
                    address payoutBeneficiary;
         | 
| 319 | 
            +
                    Amount payoutAmount;
         | 
| 320 | 
            +
                    
         | 
| 321 | 
            +
                    {
         | 
| 322 | 
            +
                        // check that payout exists and is open
         | 
| 323 | 
            +
                        IPolicy.PayoutInfo memory payoutInfo = instanceContracts.instanceReader.getPayoutInfo(policyNftId, payoutId);
         | 
| 324 | 
            +
                        payoutBeneficiary = payoutInfo.beneficiary;
         | 
| 325 | 
            +
                        payoutAmount = payoutInfo.amount;
         | 
| 326 | 
            +
                        StateId payoutState = instanceContracts.instanceReader.getPayoutState(policyNftId, payoutId);
         | 
| 327 | 
            +
                        if(payoutState != EXPECTED()) {
         | 
| 328 | 
            +
                            revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
         | 
| 329 | 
            +
                        }
         | 
| 334 330 |  | 
| 335 | 
            -
             | 
| 336 | 
            -
             | 
| 337 | 
            -
             | 
| 338 | 
            -
             | 
| 339 | 
            -
             | 
| 340 | 
            -
             | 
| 341 | 
            -
             | 
| 342 | 
            -
             | 
| 343 | 
            -
             | 
| 331 | 
            +
                        // check that payout amount does not violate claim amount
         | 
| 332 | 
            +
                        claimInfo = instanceContracts.instanceReader.getClaimInfo(policyNftId, payoutId.toClaimId());
         | 
| 333 | 
            +
                        if(claimInfo.paidAmount + payoutInfo.amount > claimInfo.claimAmount) {
         | 
| 334 | 
            +
                            revert ErrorClaimServicePayoutExceedsClaimAmount(
         | 
| 335 | 
            +
                                policyNftId, 
         | 
| 336 | 
            +
                                payoutId.toClaimId(), 
         | 
| 337 | 
            +
                                claimInfo.claimAmount, 
         | 
| 338 | 
            +
                                claimInfo.paidAmount + payoutInfo.amount);
         | 
| 339 | 
            +
                        }
         | 
| 344 340 |  | 
| 345 | 
            -
             | 
| 346 | 
            -
             | 
| 347 | 
            -
             | 
| 348 | 
            -
             | 
| 341 | 
            +
                        // effects
         | 
| 342 | 
            +
                        // update and save payout info with instance
         | 
| 343 | 
            +
                        payoutInfo.paidAt = TimestampLib.current();
         | 
| 344 | 
            +
                        instanceContracts.productStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
         | 
| 345 | 
            +
                    }
         | 
| 349 346 |  | 
| 350 347 | 
             
                    // update and save claim info with instance
         | 
| 351 | 
            -
                    Amount payoutAmount = payoutInfo.amount;
         | 
| 352 348 | 
             
                    {
         | 
| 353 349 | 
             
                        ClaimId claimId = payoutId.toClaimId();
         | 
| 354 | 
            -
                        IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 355 350 | 
             
                        claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
         | 
| 356 351 | 
             
                        claimInfo.openPayoutsCount -= 1;
         | 
| 357 352 |  | 
| 358 353 | 
             
                        // check if this payout is closing the linked claim
         | 
| 359 354 | 
             
                        // update claim and policy info accordingly
         | 
| 360 355 | 
             
                        if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
         | 
| 361 | 
            -
                            claimInfo.closedAt = TimestampLib. | 
| 362 | 
            -
                             | 
| 356 | 
            +
                            claimInfo.closedAt = TimestampLib.current();
         | 
| 357 | 
            +
                            instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
         | 
| 363 358 |  | 
| 364 359 | 
             
                            policyInfo.openClaimsCount -= 1;
         | 
| 365 360 | 
             
                        } else {
         | 
| 366 | 
            -
                             | 
| 361 | 
            +
                            instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
         | 
| 367 362 | 
             
                        }
         | 
| 368 363 | 
             
                    }
         | 
| 369 364 |  | 
| 370 365 | 
             
                    // update and save policy info with instance
         | 
| 371 366 | 
             
                    policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
         | 
| 372 | 
            -
                     | 
| 367 | 
            +
                    instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         | 
| 373 368 |  | 
| 374 369 | 
             
                    emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount);
         | 
| 375 370 |  | 
| 376 371 | 
             
                    // effects + interactions (push tokens to beneficiary, product)
         | 
| 377 372 | 
             
                    // delegate to pool to update book keeping and moving tokens payout
         | 
| 378 | 
            -
                    _poolService.processPayout(
         | 
| 379 | 
            -
                        instanceReader,
         | 
| 380 | 
            -
                        instanceStore, 
         | 
| 373 | 
            +
                    (netPayoutAmount, processingFeeAmount) = _poolService.processPayout(
         | 
| 374 | 
            +
                        instanceContracts.instanceReader,
         | 
| 375 | 
            +
                        instanceContracts.instanceStore, 
         | 
| 381 376 | 
             
                        policyInfo.productNftId, // product nft id 
         | 
| 382 377 | 
             
                        policyNftId, 
         | 
| 383 378 | 
             
                        policyInfo.bundleNftId, 
         | 
| 384 379 | 
             
                        payoutId,
         | 
| 385 380 | 
             
                        payoutAmount,
         | 
| 386 | 
            -
                         | 
| 381 | 
            +
                        payoutBeneficiary);
         | 
| 387 382 | 
             
                }
         | 
| 388 383 |  | 
| 389 384 | 
             
                function cancelPayout(
         | 
| @@ -392,30 +387,28 @@ contract ClaimService is | |
| 392 387 | 
             
                )
         | 
| 393 388 | 
             
                    external
         | 
| 394 389 | 
             
                    virtual
         | 
| 390 | 
            +
                    restricted()
         | 
| 395 391 | 
             
                {
         | 
| 396 392 | 
             
                    // checks
         | 
| 397 393 | 
             
                    (
         | 
| 398 | 
            -
                         | 
| 399 | 
            -
                        IInstance  | 
| 400 | 
            -
                        InstanceReader instanceReader,
         | 
| 401 | 
            -
                        InstanceStore instanceStore,
         | 
| 402 | 
            -
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 394 | 
            +
                        ,,
         | 
| 395 | 
            +
                        IInstance.InstanceContracts memory instanceContracts,
         | 
| 403 396 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 404 397 |  | 
| 405 | 
            -
                    StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
         | 
| 398 | 
            +
                    StateId payoutState = instanceContracts.instanceReader.getPayoutState(policyNftId, payoutId);
         | 
| 406 399 | 
             
                    if (payoutState != EXPECTED()) {
         | 
| 407 400 | 
             
                        revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
         | 
| 408 401 | 
             
                    }
         | 
| 409 402 |  | 
| 410 403 | 
             
                    // effects
         | 
| 411 404 | 
             
                    // update and save payout info with instance
         | 
| 412 | 
            -
                     | 
| 405 | 
            +
                    instanceContracts.productStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
         | 
| 413 406 |  | 
| 414 407 | 
             
                    {
         | 
| 415 408 | 
             
                        ClaimId claimId = payoutId.toClaimId();
         | 
| 416 | 
            -
                        IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 409 | 
            +
                        IPolicy.ClaimInfo memory claimInfo = instanceContracts.instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 417 410 | 
             
                        claimInfo.openPayoutsCount -= 1;
         | 
| 418 | 
            -
                         | 
| 411 | 
            +
                        instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
         | 
| 419 412 | 
             
                    }
         | 
| 420 413 |  | 
| 421 414 | 
             
                    emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
         | 
| @@ -459,16 +452,15 @@ contract ClaimService is | |
| 459 452 | 
             
                    // checks
         | 
| 460 453 | 
             
                    (
         | 
| 461 454 | 
             
                        ,,
         | 
| 462 | 
            -
                         | 
| 463 | 
            -
                        InstanceStore instanceStore,
         | 
| 455 | 
            +
                        IInstance.InstanceContracts memory instanceContracts,
         | 
| 464 456 | 
             
                        // IPolicy.PolicyInfo memory policyInfo
         | 
| 465 457 | 
             
                    ) = _verifyCallerWithPolicy(policyNftId);
         | 
| 466 458 |  | 
| 467 | 
            -
                    IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 459 | 
            +
                    IPolicy.ClaimInfo memory claimInfo = instanceContracts.instanceReader.getClaimInfo(policyNftId, claimId);
         | 
| 468 460 |  | 
| 469 461 | 
             
                    {
         | 
| 470 462 | 
             
                        // check claim state
         | 
| 471 | 
            -
                        StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
         | 
| 463 | 
            +
                        StateId claimState = instanceContracts.instanceReader.getClaimState(policyNftId, claimId);
         | 
| 472 464 | 
             
                        if (claimState != CONFIRMED()) {
         | 
| 473 465 | 
             
                            revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
         | 
| 474 466 | 
             
                        }
         | 
| @@ -489,7 +481,7 @@ contract ClaimService is | |
| 489 481 | 
             
                        beneficiary = getRegistry().ownerOf(policyNftId);
         | 
| 490 482 | 
             
                    }
         | 
| 491 483 |  | 
| 492 | 
            -
                     | 
| 484 | 
            +
                    instanceContracts.productStore.createPayout(
         | 
| 493 485 | 
             
                        policyNftId, 
         | 
| 494 486 | 
             
                        payoutId, 
         | 
| 495 487 | 
             
                        IPolicy.PayoutInfo({
         | 
| @@ -502,12 +494,14 @@ contract ClaimService is | |
| 502 494 | 
             
                    // update and save claim info with instance
         | 
| 503 495 | 
             
                    claimInfo.payoutsCount += 1;
         | 
| 504 496 | 
             
                    claimInfo.openPayoutsCount += 1;
         | 
| 505 | 
            -
                     | 
| 497 | 
            +
                    instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
         | 
| 506 498 |  | 
| 507 499 | 
             
                    emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
         | 
| 508 500 | 
             
                }
         | 
| 509 501 |  | 
| 510 | 
            -
             | 
| 502 | 
            +
                /// @dev Verifies the caller is a product and the policy is active. 
         | 
| 503 | 
            +
                /// Returns the product nft id, instance, instance contracts and policy info.
         | 
| 504 | 
            +
                /// in InstanceContracts only the contracts instanceReader, instanceStore and productStore are set.
         | 
| 511 505 | 
             
                function _verifyCallerWithPolicy(
         | 
| 512 506 | 
             
                    NftId policyNftId
         | 
| 513 507 | 
             
                )
         | 
| @@ -517,17 +511,17 @@ contract ClaimService is | |
| 517 511 | 
             
                    returns (
         | 
| 518 512 | 
             
                        NftId productNftId,
         | 
| 519 513 | 
             
                        IInstance instance,
         | 
| 520 | 
            -
                         | 
| 521 | 
            -
                        InstanceStore instanceStore,
         | 
| 514 | 
            +
                        IInstance.InstanceContracts memory instanceContracts,
         | 
| 522 515 | 
             
                        IPolicy.PolicyInfo memory policyInfo
         | 
| 523 516 | 
             
                    )
         | 
| 524 517 | 
             
                {
         | 
| 525 | 
            -
                    (productNftId, instance) =  | 
| 526 | 
            -
                    instanceReader = instance.getInstanceReader();
         | 
| 527 | 
            -
                    instanceStore = instance.getInstanceStore();
         | 
| 518 | 
            +
                    (productNftId, instance) = _getAndVerifyActiveProduct();
         | 
| 519 | 
            +
                    instanceContracts.instanceReader = InstanceReader(instance.getInstanceReader());
         | 
| 520 | 
            +
                    instanceContracts.instanceStore = InstanceStore(instance.getInstanceStore());
         | 
| 521 | 
            +
                    instanceContracts.productStore = ProductStore(instance.getProductStore());
         | 
| 528 522 |  | 
| 529 523 | 
             
                    // check caller(product) policy match
         | 
| 530 | 
            -
                    policyInfo = instanceReader.getPolicyInfo(policyNftId);
         | 
| 524 | 
            +
                    policyInfo = instanceContracts.instanceReader.getPolicyInfo(policyNftId);
         | 
| 531 525 | 
             
                    if(policyInfo.productNftId != productNftId) {
         | 
| 532 526 | 
             
                        revert ErrorClaimServicePolicyProductMismatch(policyNftId, 
         | 
| 533 527 | 
             
                        policyInfo.productNftId, 
         | 
| @@ -536,7 +530,7 @@ contract ClaimService is | |
| 536 530 | 
             
                }
         | 
| 537 531 |  | 
| 538 532 |  | 
| 539 | 
            -
                function  | 
| 533 | 
            +
                function _getAndVerifyActiveProduct() 
         | 
| 540 534 | 
             
                    internal 
         | 
| 541 535 | 
             
                    view 
         | 
| 542 536 | 
             
                    returns (
         | 
| @@ -6,7 +6,6 @@ import {IService} from "../shared/IService.sol"; | |
| 6 6 |  | 
| 7 7 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 8 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 9 | 
            -
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 10 9 | 
             
            import {ReferralId} from "../type/Referral.sol";
         | 
| 11 10 | 
             
            import {RiskId} from "../type/RiskId.sol";
         | 
| 12 11 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| @@ -15,10 +14,30 @@ import {Seconds} from "../type/Seconds.sol"; | |
| 15 14 | 
             
            /// only product components may call transaction functions
         | 
| 16 15 | 
             
            interface IApplicationService is IService {
         | 
| 17 16 |  | 
| 17 | 
            +
                event LogApplicationServiceApplicationCreated(
         | 
| 18 | 
            +
                    NftId applicationNftId,
         | 
| 19 | 
            +
                    NftId productNftId,
         | 
| 20 | 
            +
                    NftId bundleNftId, 
         | 
| 21 | 
            +
                    RiskId riskId,
         | 
| 22 | 
            +
                    ReferralId referralId,
         | 
| 23 | 
            +
                    address applicationOwner,
         | 
| 24 | 
            +
                    Amount sumInsuredAmount,
         | 
| 25 | 
            +
                    Amount premiumAmount,
         | 
| 26 | 
            +
                    Seconds lifetime);
         | 
| 27 | 
            +
                event LogApplicationServiceApplicationRenewed(NftId policyNftId, NftId bundleNftId);
         | 
| 28 | 
            +
                event LogApplicationServiceApplicationAdjusted(
         | 
| 29 | 
            +
                    NftId applicationNftId, 
         | 
| 30 | 
            +
                    NftId bundleNftId, 
         | 
| 31 | 
            +
                    RiskId riskId, 
         | 
| 32 | 
            +
                    ReferralId referralId, 
         | 
| 33 | 
            +
                    Amount sumInsuredAmount, 
         | 
| 34 | 
            +
                    Seconds lifetime);
         | 
| 35 | 
            +
                event LogApplicationServiceApplicationRevoked(NftId applicationNftId);
         | 
| 36 | 
            +
             | 
| 18 37 | 
             
                // _checkLinkedApplicationParameters
         | 
| 19 38 | 
             
                error ErrorApplicationServiceRiskProductMismatch(RiskId riskId, NftId riskProductNftId, NftId productNftId);
         | 
| 20 39 | 
             
                error ErrorApplicationServiceRiskUnknown(RiskId riskId, NftId productNftId);
         | 
| 21 | 
            -
                error  | 
| 40 | 
            +
                error ErrorApplicationServiceRiskLocked(RiskId riskId, NftId productNftId);
         | 
| 22 41 | 
             
                error ErrorApplicationServiceBundleUnknown(NftId bundleNftId, NftId poolNftId);
         | 
| 23 42 | 
             
                error ErrorApplicationServiceBundleLocked(NftId bundleNftId, NftId poolNftId);
         | 
| 24 43 | 
             
                error ErrorApplicationServiceReferralInvalid(NftId productNftId, NftId distributionNftId, ReferralId referralId);
         | 
| @@ -23,7 +23,7 @@ interface IClaimService is | |
| 23 23 | 
             
                event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
         | 
| 24 24 | 
             
                event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
         | 
| 25 25 | 
             
                event LogClaimServiceClaimRevoked(NftId policyNftId, ClaimId claimId);
         | 
| 26 | 
            -
                event  | 
| 26 | 
            +
                event LogClaimServiceClaimCancelled(NftId policyNftId, ClaimId claimId);
         | 
| 27 27 |  | 
| 28 28 | 
             
                event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
         | 
| 29 29 | 
             
                event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount);
         | 
| @@ -83,9 +83,10 @@ interface IClaimService is | |
| 83 83 | 
             
                ) external;
         | 
| 84 84 |  | 
| 85 85 |  | 
| 86 | 
            -
                /// @dev  | 
| 86 | 
            +
                /// @dev cancels a confirmed claim before it has been fully paid out. 
         | 
| 87 | 
            +
                /// Can only be called when there are not pending payouts
         | 
| 87 88 | 
             
                /// function can only be called by product, policy needs to match with calling product
         | 
| 88 | 
            -
                function  | 
| 89 | 
            +
                function cancelConfirmedClaim(
         | 
| 89 90 | 
             
                    NftId policyNftId, 
         | 
| 90 91 | 
             
                    ClaimId claimId
         | 
| 91 92 | 
             
                ) external;
         | 
| @@ -125,7 +126,7 @@ interface IClaimService is | |
| 125 126 | 
             
                function processPayout(
         | 
| 126 127 | 
             
                    NftId policyNftId, 
         | 
| 127 128 | 
             
                    PayoutId payoutId
         | 
| 128 | 
            -
                ) external;
         | 
| 129 | 
            +
                ) external returns (Amount netPayoutAmount, Amount processingFeeAmount);
         | 
| 129 130 |  | 
| 130 131 | 
             
                /// @dev cancels the specified payout. no tokens are moved, payout is set to cancelled. 
         | 
| 131 132 | 
             
                function cancelPayout(
         | 
| @@ -5,7 +5,6 @@ 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";
         | 
| 9 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 10 9 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 11 10 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| @@ -20,6 +19,7 @@ interface IPolicyService is IService { | |
| 20 19 | 
             
                event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
         | 
| 21 20 | 
             
                event LogPolicyServicePolicyClosed(NftId policyNftId);
         | 
| 22 21 |  | 
| 22 | 
            +
                error LogPolicyServiceMaxPremiumAmountExceeded(NftId policyNftId, Amount maxPremiumAmount, Amount premiumAmount);
         | 
| 23 23 | 
             
                error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
         | 
| 24 24 | 
             
                error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
         | 
| 25 25 | 
             
                error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
         | 
| @@ -45,14 +45,21 @@ interface IPolicyService is IService { | |
| 45 45 | 
             
                error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
         | 
| 46 46 |  | 
| 47 47 | 
             
                /// @dev creates the policy from {applicationNftId}. 
         | 
| 48 | 
            +
                /// @param applicationNftId the application NftId
         | 
| 49 | 
            +
                /// @param activateAt the timestamp when the policy should be activated
         | 
| 50 | 
            +
                /// @param maxPremiumAmount the maximum premium amount that the policy holder is willing to pay
         | 
| 51 | 
            +
                /// During policy creation, the effective premium amount is calculated based on the provided parameters. If this
         | 
| 52 | 
            +
                /// amount is higher than the maxPremiumAmount, the function will revert.
         | 
| 48 53 | 
             
                /// After successful completion of the function the policy can be referenced using the application NftId.
         | 
| 49 54 | 
             
                /// Locks the sum insured amount in the pool, but does not transfer tokens. Call collectPremium to transfer tokens. 
         | 
| 50 55 | 
             
                /// Sets the policy state to collateralized.
         | 
| 51 56 | 
             
                /// Optionally activates the policy if activateAt is a non-zero timestamp.
         | 
| 52 57 | 
             
                /// only the related product may create a policy from an application
         | 
| 58 | 
            +
                /// @return premiumAmount the effective premium amount
         | 
| 53 59 | 
             
                function createPolicy(
         | 
| 54 60 | 
             
                    NftId applicationNftId,
         | 
| 55 | 
            -
                    Timestamp activateAt
         | 
| 61 | 
            +
                    Timestamp activateAt,
         | 
| 62 | 
            +
                    Amount maxPremiumAmount
         | 
| 56 63 | 
             
                )
         | 
| 57 64 | 
             
                    external
         | 
| 58 65 | 
             
                    returns (Amount premiumAmount);
         | 
| @@ -9,7 +9,16 @@ import {StateId} from "../type/StateId.sol"; | |
| 9 9 |  | 
| 10 10 | 
             
            interface IRiskService is IService {
         | 
| 11 11 |  | 
| 12 | 
            +
                event LogRiskServiceRiskCreated(NftId productNftId, RiskId riskId);
         | 
| 13 | 
            +
                event LogRiskServiceRiskUpdated(NftId productNftId, RiskId riskId);
         | 
| 14 | 
            +
                event LogRiskServiceRiskLocked(NftId productNftId, RiskId riskId);
         | 
| 15 | 
            +
                event LogRiskServiceRiskUnlocked(NftId productNftId, RiskId riskId);
         | 
| 16 | 
            +
                event LogRiskServiceRiskClosed(NftId productNftId, RiskId riskId);
         | 
| 17 | 
            +
                
         | 
| 12 18 | 
             
                error ErrorRiskServiceRiskProductMismatch(RiskId riskId, NftId riskProductNftId, NftId productNftId);
         | 
| 19 | 
            +
                error ErrorRiskServiceRiskNotActive(NftId productNftId, RiskId riskId);
         | 
| 20 | 
            +
                error ErrorRiskServiceUnknownRisk(NftId productNftId, RiskId riskId);
         | 
| 21 | 
            +
                error ErrorRiskServiceRiskNotLocked(NftId productNftId, RiskId riskId);
         | 
| 13 22 |  | 
| 14 23 | 
             
                /// @dev Create a new risk with the given id and provided data. 
         | 
| 15 24 | 
             
                /// The key of the risk derived from the risk id in comination with the product NftId. 
         | 
| @@ -25,9 +34,15 @@ interface IRiskService is IService { | |
| 25 34 | 
             
                    bytes memory data
         | 
| 26 35 | 
             
                ) external;
         | 
| 27 36 |  | 
| 28 | 
            -
             | 
| 29 | 
            -
                 | 
| 37 | 
            +
                /// @dev Locks/unlocks the risk with the given id.
         | 
| 38 | 
            +
                /// No new policies can be underwritten for a locked risk.
         | 
| 39 | 
            +
                function setRiskLocked(
         | 
| 30 40 | 
             
                    RiskId riskId,
         | 
| 31 | 
            -
                     | 
| 41 | 
            +
                    bool locked
         | 
| 42 | 
            +
                ) external;
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                /// @dev Close the risk with the given id.
         | 
| 45 | 
            +
                function closeRisk(
         | 
| 46 | 
            +
                    RiskId riskId
         | 
| 32 47 | 
             
                ) external;
         | 
| 33 48 | 
             
            }
         |