@etherisc/gif-next 0.0.2-a6ce659-551 → 0.0.2-a6d7b34-014

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