@etherisc/gif-next 0.0.2-bdb55c6-577 → 0.0.2-bdbfee9-660

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