@etherisc/gif-next 0.0.2-bafc958-412 → 0.0.2-bb3faee-097

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