@etherisc/gif-next 0.0.2-c5049d4-401 → 0.0.2-c554b1e-622

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