@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e79d227-681

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