@etherisc/gif-next 0.0.2-b1fff40-773 → 0.0.2-b2070b1-995

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