@etherisc/gif-next 0.0.2-ff282a4-523 → 0.0.2-ff3a8a0-504

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