@etherisc/gif-next 0.0.2-f1b01e0-214 → 0.0.2-f1e6957-384

Sign up to get free protection for your applications and to get access to all the features.
Files changed (459) hide show
  1. package/README.md +76 -341
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +100 -32
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +52 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +367 -126
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1546 -211
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +261 -59
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +258 -82
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +97 -14
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +52 -27
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +264 -64
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +20 -11
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -139
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +160 -78
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +19 -10
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +228 -15
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +81 -52
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +263 -63
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +109 -68
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +263 -63
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +74 -33
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +263 -63
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +35 -26
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +85 -60
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +263 -63
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +264 -78
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +263 -63
  63. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  64. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  67. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  68. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +359 -33
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +297 -3
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +407 -97
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +756 -392
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +231 -75
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +492 -424
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +323 -29
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -42
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1444 -2133
  87. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  88. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +25 -16
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +277 -60
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -10
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -10
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +83 -38
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +37 -36
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +263 -63
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +294 -117
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +180 -27
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +19 -10
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -1
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +19 -10
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +88 -22
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +324 -65
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +216 -59
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +113 -43
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -10
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +263 -63
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -10
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +508 -18
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +93 -72
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -50
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +19 -10
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -43
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +71 -60
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +537 -300
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +330 -71
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +41 -12
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +543 -226
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +167 -103
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +19 -10
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -174
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -64
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +76 -41
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -10
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +84 -105
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -10
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -10
  242. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  243. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  245. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  247. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  249. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  251. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  253. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  254. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  259. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  261. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1384 -128
  263. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +94 -114
  265. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  266. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  267. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  268. package/artifacts/contracts/staking/Staking.sol/Staking.json +1472 -185
  269. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +73 -72
  271. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -64
  273. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +293 -149
  275. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +128 -164
  277. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -46
  279. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1617 -817
  281. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  282. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  283. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +140 -78
  285. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  286. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -2
  288. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  290. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  292. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  294. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  296. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  298. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  300. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  302. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  304. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  306. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
  308. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  310. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  312. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  314. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  316. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
  318. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  320. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  325. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  327. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
  329. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  331. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  334. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
  335. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  336. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  337. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  338. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  339. package/contracts/accounting/AccountingService.sol +15 -3
  340. package/contracts/accounting/IAccountingService.sol +2 -0
  341. package/contracts/authorization/AccessAdmin.sol +292 -317
  342. package/contracts/authorization/AccessAdminLib.sol +517 -22
  343. package/contracts/authorization/AccessManagerCloneable.sol +0 -18
  344. package/contracts/authorization/Authorization.sol +64 -239
  345. package/contracts/authorization/IAccess.sol +23 -14
  346. package/contracts/authorization/IAccessAdmin.sol +25 -53
  347. package/contracts/authorization/IAuthorization.sol +3 -57
  348. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  349. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  350. package/contracts/distribution/BasicDistribution.sol +3 -4
  351. package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
  352. package/contracts/distribution/Distribution.sol +9 -8
  353. package/contracts/distribution/DistributionService.sol +98 -35
  354. package/contracts/distribution/IDistributionComponent.sol +3 -1
  355. package/contracts/distribution/IDistributionService.sol +20 -8
  356. package/contracts/examples/fire/FireProduct.sol +6 -6
  357. package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
  358. package/contracts/instance/BaseStore.sol +93 -0
  359. package/contracts/instance/IBaseStore.sol +37 -0
  360. package/contracts/instance/IInstance.sol +55 -5
  361. package/contracts/instance/IInstanceService.sol +37 -6
  362. package/contracts/instance/Instance.sol +103 -56
  363. package/contracts/instance/InstanceAdmin.sol +151 -294
  364. package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
  365. package/contracts/instance/InstanceReader.sol +350 -394
  366. package/contracts/instance/InstanceService.sol +180 -125
  367. package/contracts/instance/InstanceStore.sol +153 -128
  368. package/contracts/instance/ProductStore.sol +290 -0
  369. package/contracts/instance/RiskSet.sol +10 -2
  370. package/contracts/instance/TargetNames.sol +10 -0
  371. package/contracts/instance/base/BalanceStore.sol +4 -6
  372. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  373. package/contracts/instance/module/IComponents.sol +0 -2
  374. package/contracts/oracle/BasicOracle.sol +2 -3
  375. package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
  376. package/contracts/oracle/Oracle.sol +4 -6
  377. package/contracts/oracle/OracleService.sol +8 -8
  378. package/contracts/pool/BasicPool.sol +4 -16
  379. package/contracts/pool/BasicPoolAuthorization.sol +10 -5
  380. package/contracts/pool/BundleService.sol +34 -43
  381. package/contracts/pool/IBundleService.sol +14 -13
  382. package/contracts/pool/IPoolService.sol +7 -2
  383. package/contracts/pool/Pool.sol +6 -18
  384. package/contracts/pool/PoolLib.sol +127 -2
  385. package/contracts/pool/PoolService.sol +40 -181
  386. package/contracts/product/ApplicationService.sol +64 -11
  387. package/contracts/product/BasicProduct.sol +2 -3
  388. package/contracts/product/BasicProductAuthorization.sol +11 -4
  389. package/contracts/product/ClaimService.sol +99 -105
  390. package/contracts/product/IApplicationService.sol +21 -2
  391. package/contracts/product/IClaimService.sol +5 -4
  392. package/contracts/product/IPolicyService.sol +9 -2
  393. package/contracts/product/IRiskService.sol +18 -3
  394. package/contracts/product/PolicyService.sol +40 -59
  395. package/contracts/product/PolicyServiceLib.sol +79 -5
  396. package/contracts/product/PricingService.sol +22 -25
  397. package/contracts/product/Product.sol +40 -16
  398. package/contracts/product/RiskService.sol +50 -15
  399. package/contracts/registry/IRegistry.sol +11 -9
  400. package/contracts/registry/IRelease.sol +6 -3
  401. package/contracts/registry/Registry.sol +15 -9
  402. package/contracts/registry/RegistryAdmin.sol +33 -118
  403. package/contracts/registry/RegistryAuthorization.sol +139 -69
  404. package/contracts/registry/RegistryService.sol +1 -1
  405. package/contracts/registry/ReleaseAdmin.sol +52 -106
  406. package/contracts/registry/ReleaseRegistry.sol +20 -12
  407. package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
  408. package/contracts/registry/TokenRegistry.sol +56 -52
  409. package/contracts/shared/Component.sol +8 -8
  410. package/contracts/shared/ComponentService.sol +245 -262
  411. package/contracts/shared/ContractLib.sol +106 -75
  412. package/contracts/shared/IComponent.sol +1 -1
  413. package/contracts/shared/IComponentService.sol +12 -13
  414. package/contracts/shared/INftOwnable.sol +2 -0
  415. package/contracts/shared/IRegisterable.sol +0 -1
  416. package/contracts/shared/InstanceLinkedComponent.sol +6 -9
  417. package/contracts/shared/NftOwnable.sol +3 -1
  418. package/contracts/shared/PolicyHolder.sol +3 -2
  419. package/contracts/shared/Service.sol +6 -4
  420. package/contracts/staking/IStaking.sol +261 -70
  421. package/contracts/staking/IStakingService.sol +39 -84
  422. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  423. package/contracts/staking/Staking.sol +468 -217
  424. package/contracts/staking/StakingLib.sol +38 -124
  425. package/contracts/staking/StakingManager.sol +4 -3
  426. package/contracts/staking/StakingReader.sol +62 -71
  427. package/contracts/staking/StakingService.sol +42 -185
  428. package/contracts/staking/StakingServiceManager.sol +1 -0
  429. package/contracts/staking/StakingStore.sol +1093 -331
  430. package/contracts/staking/TargetHandler.sol +132 -0
  431. package/contracts/staking/TargetManagerLib.sol +69 -46
  432. package/contracts/type/Amount.sol +4 -0
  433. package/contracts/type/Blocknumber.sol +17 -22
  434. package/contracts/type/ChainId.sol +101 -0
  435. package/contracts/type/NftId.sol +3 -3
  436. package/contracts/type/ObjectType.sol +16 -3
  437. package/contracts/type/RoleId.sol +57 -59
  438. package/contracts/type/Seconds.sol +19 -0
  439. package/contracts/type/String.sol +12 -0
  440. package/contracts/type/Timestamp.sol +4 -2
  441. package/contracts/type/UFixed.sol +1 -0
  442. package/contracts/upgradeability/IVersionable.sol +3 -0
  443. package/contracts/upgradeability/ProxyManager.sol +26 -12
  444. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  445. package/contracts/upgradeability/Versionable.sol +6 -3
  446. package/package.json +1 -1
  447. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  448. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  449. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  450. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  451. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  452. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  453. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  454. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  455. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  456. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  457. package/contracts/shared/IKeyValueStore.sol +0 -54
  458. package/contracts/shared/KeyValueStore.sol +0 -131
  459. 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, COMPONENT, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
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 instance,,
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.blockTimestamp() >= policyInfo.expiredAt) {
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
- instanceStore.createClaim(
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
- instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
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
- InstanceReader instanceReader,
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
- instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
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
- instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
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.blockTimestamp());
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 instance,
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.blockTimestamp();
182
- instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
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
- instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
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 instance,
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.blockTimestamp();
211
- instanceStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
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
- instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
211
+ instanceContracts.productStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
216
212
 
217
213
  emit LogClaimServiceClaimRevoked(policyNftId, claimId);
218
214
  }
219
215
 
220
216
 
221
- function close(
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 instance,
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
- // check claim paid amount matches with claim amount
251
- if(claimInfo.paidAmount.toInt() < claimInfo.claimAmount.toInt()) {
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
- claimInfo.closedAt = TimestampLib.blockTimestamp();
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
- NftId productNftId,,
322
- // IInstance instance,
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
- // check that payout exists and is open
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
- }
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
- // 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
- }
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
- // effects
346
- // update and save payout info with instance
347
- payoutInfo.paidAt = TimestampLib.blockTimestamp();
348
- instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
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.blockTimestamp();
362
- instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
356
+ claimInfo.closedAt = TimestampLib.current();
357
+ instanceContracts.productStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
363
358
 
364
359
  policyInfo.openClaimsCount -= 1;
365
360
  } else {
366
- instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
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
- instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
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
- payoutInfo.beneficiary);
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 instance,
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
- instanceStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
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
- instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
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
- InstanceReader instanceReader,
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
- instanceStore.createPayout(
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
- instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
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
- InstanceReader instanceReader,
521
- InstanceStore instanceStore,
514
+ IInstance.InstanceContracts memory instanceContracts,
522
515
  IPolicy.PolicyInfo memory policyInfo
523
516
  )
524
517
  {
525
- (productNftId, instance) = _getAndVerifyActiveComponent(PRODUCT());
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 _getAndVerifyActiveComponent(ObjectType expectedType)
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 ErrorApplicationServiceRiskPaused(RiskId riskId, NftId productNftId);
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 LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
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 closes the specified claim
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 close(
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
- function updateRiskState(
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
- StateId newState
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
  }