@etherisc/gif-next 0.0.2-f619be3-760 → 0.0.2-f62dcdf-553

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 (663) hide show
  1. package/README.md +372 -24
  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/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1048 -0
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1455 -0
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +838 -0
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +929 -0
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +961 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +330 -1135
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +702 -0
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +388 -1276
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1653 -0
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2058 -0
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +995 -0
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +722 -0
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3678 -0
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  87. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  88. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  90. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  92. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  94. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  95. package/artifacts/contracts/instance/{treasury/ITreasury.sol/ITreasury.json → module/IRisk.sol/IRisk.json} +2 -2
  96. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  97. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  105. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +788 -0
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +907 -0
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1299 -0
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  119. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1465 -0
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  121. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +834 -0
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  123. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +960 -0
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  125. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +960 -0
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1283 -0
  128. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/Pool.sol/Pool.json +1098 -0
  130. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  131. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1625 -0
  132. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +766 -0
  134. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  135. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +771 -0
  136. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +710 -0
  138. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  139. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
  140. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  141. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  142. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  143. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1431 -0
  144. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +838 -0
  146. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +546 -0
  148. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  150. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +925 -0
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  153. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  154. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  155. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1012 -0
  156. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  157. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +429 -0
  158. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  159. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1302 -0
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  163. package/artifacts/contracts/product/PricingService.sol/PricingService.json +907 -0
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  165. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +762 -0
  166. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  167. package/artifacts/contracts/product/Product.sol/Product.json +1131 -0
  168. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  169. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  170. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  172. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  174. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1001 -27
  176. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  177. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1019 -0
  178. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  179. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  180. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/Registry.sol/Registry.json +1518 -119
  182. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  183. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
  184. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  185. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1246 -0
  186. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  187. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +713 -0
  188. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  190. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  191. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  192. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  193. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  194. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  195. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  196. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  197. package/artifacts/contracts/shared/Component.sol/Component.json +725 -0
  198. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1768 -0
  200. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +814 -0
  202. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  203. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +474 -0
  204. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  205. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  206. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +632 -0
  208. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1335 -0
  210. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +723 -0
  212. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  213. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  214. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/{instance/lifecycle → shared}/ILifecycle.sol/ILifecycle.json +65 -53
  216. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  217. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +57 -76
  218. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  219. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  220. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  221. package/artifacts/contracts/{instance/component/IComponent.sol/IComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +90 -97
  222. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  223. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  224. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/IService.sol/IService.json +375 -0
  226. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  227. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  228. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  229. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +829 -0
  230. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  231. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  232. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  233. package/artifacts/contracts/{instance/lifecycle/ILifecycle.sol/ILifecycleModule.json → shared/Lifecycle.sol/Lifecycle.json} +50 -58
  234. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  235. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  236. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  237. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  238. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  239. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  240. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  241. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +322 -0
  242. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  243. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  244. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  245. package/artifacts/contracts/shared/Service.sol/Service.json +442 -0
  246. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  247. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +469 -0
  248. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  249. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  250. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  251. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
  252. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  253. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  254. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  256. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  257. package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
  258. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  260. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +776 -0
  262. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  264. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1249 -0
  266. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +710 -0
  268. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  269. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  270. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  272. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  273. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  274. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  276. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  278. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  280. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  282. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  284. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  286. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  288. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  289. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  290. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  292. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  294. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  296. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  298. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  300. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  302. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  304. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  306. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  308. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  310. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  312. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  314. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  316. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  318. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  320. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  322. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  324. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  326. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  327. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  328. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  329. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  330. package/contracts/authorization/AccessAdmin.sol +596 -0
  331. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  332. package/contracts/authorization/Authorization.sol +289 -0
  333. package/contracts/authorization/IAccess.sol +49 -0
  334. package/contracts/authorization/IAccessAdmin.sol +137 -0
  335. package/contracts/authorization/IAuthorization.sol +60 -0
  336. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  337. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  338. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  339. package/contracts/distribution/BasicDistribution.sol +139 -0
  340. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  341. package/contracts/distribution/Distribution.sol +285 -0
  342. package/contracts/distribution/DistributionService.sol +355 -0
  343. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  344. package/contracts/distribution/IDistributionComponent.sol +52 -0
  345. package/contracts/distribution/IDistributionService.sol +101 -0
  346. package/contracts/examples/fire/DamageLevel.sol +59 -0
  347. package/contracts/examples/fire/FirePool.sol +73 -0
  348. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  349. package/contracts/examples/fire/FireProduct.sol +415 -0
  350. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  351. package/contracts/examples/fire/FireUSD.sol +26 -0
  352. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  353. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  354. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  355. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  356. package/contracts/instance/BundleSet.sol +126 -0
  357. package/contracts/instance/IInstance.sol +63 -22
  358. package/contracts/instance/IInstanceService.sol +72 -0
  359. package/contracts/instance/Instance.sol +214 -54
  360. package/contracts/instance/InstanceAdmin.sol +277 -0
  361. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  362. package/contracts/instance/InstanceReader.sol +495 -0
  363. package/contracts/instance/InstanceService.sol +411 -0
  364. package/contracts/instance/InstanceServiceManager.sol +39 -0
  365. package/contracts/instance/InstanceStore.sol +287 -0
  366. package/contracts/instance/base/BalanceStore.sol +123 -0
  367. package/contracts/instance/base/Cloneable.sol +28 -0
  368. package/contracts/instance/base/ObjectCounter.sol +21 -0
  369. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  370. package/contracts/instance/base/ObjectSet.sol +79 -0
  371. package/contracts/instance/module/IAccess.sol +46 -0
  372. package/contracts/instance/module/IBundle.sol +20 -0
  373. package/contracts/instance/module/IComponents.sol +51 -0
  374. package/contracts/instance/module/IDistribution.sol +41 -0
  375. package/contracts/instance/module/IPolicy.sol +84 -0
  376. package/contracts/instance/module/IRisk.sol +11 -0
  377. package/contracts/mock/Dip.sol +2 -2
  378. package/contracts/oracle/BasicOracle.sol +47 -0
  379. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  380. package/contracts/oracle/IOracle.sol +36 -0
  381. package/contracts/oracle/IOracleComponent.sol +33 -0
  382. package/contracts/oracle/IOracleService.sol +66 -0
  383. package/contracts/oracle/Oracle.sol +156 -0
  384. package/contracts/oracle/OracleService.sol +291 -0
  385. package/contracts/oracle/OracleServiceManager.sol +39 -0
  386. package/contracts/pool/BasicPool.sol +154 -0
  387. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  388. package/contracts/pool/BundleService.sol +493 -0
  389. package/contracts/pool/BundleServiceManager.sol +39 -0
  390. package/contracts/pool/IBundleService.sol +143 -0
  391. package/contracts/pool/IPoolComponent.sol +68 -0
  392. package/contracts/pool/IPoolService.sol +167 -0
  393. package/contracts/pool/Pool.sol +335 -0
  394. package/contracts/pool/PoolService.sol +544 -0
  395. package/contracts/pool/PoolServiceManager.sol +39 -0
  396. package/contracts/product/ApplicationService.sol +259 -0
  397. package/contracts/product/ApplicationServiceManager.sol +38 -0
  398. package/contracts/product/BasicProduct.sol +53 -0
  399. package/contracts/product/BasicProductAuthorization.sol +42 -0
  400. package/contracts/product/ClaimService.sol +612 -0
  401. package/contracts/product/ClaimServiceManager.sol +38 -0
  402. package/contracts/product/IApplicationService.sol +63 -0
  403. package/contracts/product/IClaimService.sol +123 -0
  404. package/contracts/product/IPolicyService.sol +80 -0
  405. package/contracts/product/IPricingService.sol +39 -0
  406. package/contracts/product/IProductComponent.sol +59 -0
  407. package/contracts/product/IRiskService.sol +33 -0
  408. package/contracts/product/PolicyService.sol +691 -0
  409. package/contracts/product/PolicyServiceManager.sol +39 -0
  410. package/contracts/product/PricingService.sol +300 -0
  411. package/contracts/product/PricingServiceManager.sol +39 -0
  412. package/contracts/product/Product.sol +455 -0
  413. package/contracts/product/RiskService.sol +96 -0
  414. package/contracts/product/RiskServiceManager.sol +39 -0
  415. package/contracts/registry/ChainNft.sol +173 -61
  416. package/contracts/registry/IRegistry.sol +149 -45
  417. package/contracts/registry/IRegistryService.sol +62 -0
  418. package/contracts/registry/ITransferInterceptor.sol +6 -0
  419. package/contracts/registry/Registry.sol +668 -133
  420. package/contracts/registry/RegistryAdmin.sol +448 -0
  421. package/contracts/registry/RegistryService.sol +241 -0
  422. package/contracts/registry/RegistryServiceManager.sol +53 -0
  423. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  424. package/contracts/registry/ReleaseRegistry.sol +501 -0
  425. package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
  426. package/contracts/registry/TokenRegistry.sol +315 -0
  427. package/contracts/shared/Component.sol +265 -0
  428. package/contracts/shared/ComponentService.sol +745 -0
  429. package/contracts/shared/ComponentServiceManager.sol +38 -0
  430. package/contracts/shared/ComponentVerifyingService.sol +126 -0
  431. package/contracts/shared/ContractLib.sol +38 -0
  432. package/contracts/shared/IComponent.sol +74 -0
  433. package/contracts/shared/IComponentService.sol +120 -0
  434. package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
  435. package/contracts/shared/IKeyValueStore.sol +54 -0
  436. package/contracts/shared/ILifecycle.sol +31 -0
  437. package/contracts/shared/INftOwnable.sol +25 -0
  438. package/contracts/shared/IPolicyHolder.sol +35 -0
  439. package/contracts/shared/IRegisterable.sol +26 -0
  440. package/contracts/shared/IRegistryLinked.sol +11 -0
  441. package/contracts/shared/IService.sol +25 -0
  442. package/contracts/shared/InitializableERC165.sol +27 -0
  443. package/contracts/shared/InstanceLinkedComponent.sol +213 -0
  444. package/contracts/shared/KeyValueStore.sol +131 -0
  445. package/contracts/shared/Lifecycle.sol +88 -0
  446. package/contracts/shared/NftIdSet.sol +65 -0
  447. package/contracts/shared/NftOwnable.sol +127 -0
  448. package/contracts/shared/PolicyHolder.sol +62 -0
  449. package/contracts/shared/Registerable.sol +85 -0
  450. package/contracts/shared/RegistryLinked.sol +44 -0
  451. package/contracts/shared/Service.sol +84 -0
  452. package/contracts/shared/TokenHandler.sol +139 -0
  453. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  454. package/contracts/staking/IStaking.sol +168 -0
  455. package/contracts/staking/IStakingService.sol +157 -0
  456. package/contracts/staking/StakeManagerLib.sol +224 -0
  457. package/contracts/staking/Staking.sol +497 -0
  458. package/contracts/staking/StakingLifecycle.sol +23 -0
  459. package/contracts/staking/StakingManager.sol +52 -0
  460. package/contracts/staking/StakingReader.sol +190 -0
  461. package/contracts/staking/StakingService.sol +407 -0
  462. package/contracts/staking/StakingServiceManager.sol +44 -0
  463. package/contracts/staking/StakingStore.sol +605 -0
  464. package/contracts/staking/TargetManagerLib.sol +211 -0
  465. package/contracts/type/AddressSet.sol +58 -0
  466. package/contracts/type/Amount.sol +150 -0
  467. package/contracts/{types → type}/Blocknumber.sol +27 -3
  468. package/contracts/type/ClaimId.sol +80 -0
  469. package/contracts/type/DistributorType.sol +55 -0
  470. package/contracts/type/Fee.sol +66 -0
  471. package/contracts/type/Key32.sol +50 -0
  472. package/contracts/type/NftId.sol +79 -0
  473. package/contracts/type/NftIdSet.sol +62 -0
  474. package/contracts/type/ObjectType.sol +276 -0
  475. package/contracts/type/PayoutId.sol +82 -0
  476. package/contracts/type/Referral.sol +90 -0
  477. package/contracts/type/RequestId.sol +75 -0
  478. package/contracts/type/RiskId.sol +57 -0
  479. package/contracts/type/RoleId.sol +162 -0
  480. package/contracts/type/Seconds.sol +101 -0
  481. package/contracts/type/Selector.sol +102 -0
  482. package/contracts/{types → type}/StateId.sol +64 -6
  483. package/contracts/type/String.sol +53 -0
  484. package/contracts/{types → type}/Timestamp.sol +52 -8
  485. package/contracts/type/UFixed.sol +355 -0
  486. package/contracts/type/Version.sol +110 -0
  487. package/contracts/upgradeability/IVersionable.sol +53 -0
  488. package/contracts/upgradeability/ProxyManager.sol +232 -0
  489. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  490. package/contracts/upgradeability/Versionable.sol +59 -0
  491. package/package.json +17 -7
  492. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  493. package/artifacts/contracts/components/Component.sol/Component.json +0 -205
  494. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  495. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  496. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  497. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  498. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  499. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  500. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  501. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -328
  502. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  503. package/artifacts/contracts/components/Product.sol/Product.json +0 -346
  504. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  506. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  508. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  510. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  512. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  514. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  516. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  518. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  520. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  522. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  524. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  526. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  528. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  530. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  532. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  534. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  536. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  538. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  539. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  540. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  541. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  542. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  543. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  544. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  545. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  546. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  547. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  548. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  550. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  551. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  552. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  553. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  554. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  555. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  556. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  557. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  558. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  559. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  560. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  561. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  562. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  563. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  564. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  565. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  566. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  567. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  568. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  569. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  570. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  571. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  572. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  573. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  574. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  575. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  576. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  577. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  578. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  580. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  581. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  582. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  583. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  584. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  585. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  586. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  587. package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
  588. package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
  589. package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
  590. package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
  591. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
  592. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
  593. package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
  594. package/artifacts/contracts/mock/Usdc.sol/USDC.json +0 -338
  595. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  596. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  597. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  598. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  599. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  600. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  601. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  602. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  603. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  604. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  605. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  606. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  608. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  610. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  612. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  614. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  616. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  618. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  620. package/contracts/components/Component.sol +0 -77
  621. package/contracts/components/IPool.sol +0 -15
  622. package/contracts/components/IProduct.sol +0 -16
  623. package/contracts/components/Pool.sol +0 -52
  624. package/contracts/components/Product.sol +0 -89
  625. package/contracts/experiment/errors/Require.sol +0 -38
  626. package/contracts/experiment/errors/Revert.sol +0 -44
  627. package/contracts/experiment/inheritance/A.sol +0 -53
  628. package/contracts/experiment/inheritance/B.sol +0 -28
  629. package/contracts/experiment/inheritance/C.sol +0 -34
  630. package/contracts/experiment/inheritance/IA.sol +0 -13
  631. package/contracts/experiment/inheritance/IB.sol +0 -10
  632. package/contracts/experiment/inheritance/IC.sol +0 -12
  633. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  634. package/contracts/experiment/statemachine/ISM.sol +0 -25
  635. package/contracts/experiment/statemachine/README.md +0 -112
  636. package/contracts/experiment/statemachine/SM.sol +0 -57
  637. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  638. package/contracts/experiment/types/TypeA.sol +0 -47
  639. package/contracts/experiment/types/TypeB.sol +0 -29
  640. package/contracts/instance/access/Access.sol +0 -165
  641. package/contracts/instance/access/IAccess.sol +0 -63
  642. package/contracts/instance/component/ComponentModule.sol +0 -274
  643. package/contracts/instance/component/IComponent.sol +0 -74
  644. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  645. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  646. package/contracts/instance/policy/IPolicy.sol +0 -50
  647. package/contracts/instance/policy/PolicyModule.sol +0 -114
  648. package/contracts/instance/pool/IPoolModule.sol +0 -23
  649. package/contracts/instance/pool/PoolModule.sol +0 -81
  650. package/contracts/instance/product/IProductService.sol +0 -36
  651. package/contracts/instance/product/ProductService.sol +0 -136
  652. package/contracts/instance/treasury/ITreasury.sol +0 -91
  653. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  654. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  655. package/contracts/mock/TestPool.sol +0 -16
  656. package/contracts/mock/TestProduct.sol +0 -39
  657. package/contracts/mock/Usdc.sol +0 -26
  658. package/contracts/registry/IChainNft.sol +0 -21
  659. package/contracts/types/ChainId.sol +0 -38
  660. package/contracts/types/Fee.sol +0 -32
  661. package/contracts/types/NftId.sol +0 -51
  662. package/contracts/types/ObjectType.sol +0 -107
  663. package/contracts/types/UFixed.sol +0 -210
@@ -0,0 +1,612 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../type/Amount.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";
10
+ import {StateId} from "../type/StateId.sol";
11
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
12
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
13
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
14
+ import {ContractLib} from "../shared/ContractLib.sol";
15
+ import {InstanceReader} from "../instance/InstanceReader.sol";
16
+ import {InstanceStore} from "../instance/InstanceStore.sol";
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";
24
+ import {IPoolService} from "../pool/IPoolService.sol";
25
+
26
+
27
+ contract ClaimService is
28
+ ComponentVerifyingService,
29
+ IClaimService
30
+ {
31
+
32
+ IPolicyService internal _policyService;
33
+ IPoolService internal _poolService;
34
+
35
+ function _initialize(
36
+ address owner,
37
+ bytes memory data
38
+ )
39
+ internal
40
+ virtual override
41
+ initializer()
42
+ {
43
+ (
44
+ address registryAddress,
45
+ address authority
46
+ ) = abi.decode(data, (address, address));
47
+
48
+ _initializeService(registryAddress, authority, owner);
49
+
50
+ _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
51
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
52
+
53
+ _registerInterface(type(IClaimService).interfaceId);
54
+ }
55
+
56
+ function submit(
57
+ NftId policyNftId,
58
+ Amount claimAmount,
59
+ bytes memory claimData // claim submission data
60
+ )
61
+ external
62
+ virtual
63
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
64
+ returns (ClaimId claimId)
65
+ {
66
+ _checkNftType(policyNftId, POLICY());
67
+
68
+ (
69
+ ,
70
+ IInstance instance,,
71
+ InstanceStore instanceStore,
72
+ IPolicy.PolicyInfo memory policyInfo
73
+ ) = _verifyCallerWithPolicy(policyNftId);
74
+
75
+ // check policy is in its active period
76
+ if(policyInfo.activatedAt.eqz() || TimestampLib.blockTimestamp() >= policyInfo.expiredAt) {
77
+ revert ErrorClaimServicePolicyNotOpen(policyNftId);
78
+ }
79
+
80
+ // TODO check claim amount > 0
81
+ // check policy including this claim is still within sum insured
82
+ if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
83
+ revert ErrorClaimServiceClaimExceedsSumInsured(
84
+ policyNftId,
85
+ policyInfo.sumInsuredAmount,
86
+ AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
87
+ }
88
+
89
+ // create new claim
90
+ claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
91
+ instanceStore.createClaim(
92
+ policyNftId,
93
+ claimId,
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()}));
102
+
103
+ // update and save policy info with instance
104
+ // policy claim amount is only updated when claim is confirmed
105
+ policyInfo.claimsCount += 1;
106
+ policyInfo.openClaimsCount += 1;
107
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
108
+
109
+ emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
110
+ }
111
+
112
+
113
+ function confirm(
114
+ NftId policyNftId,
115
+ ClaimId claimId,
116
+ Amount confirmedAmount,
117
+ bytes memory data // claim processing data
118
+ )
119
+ external
120
+ virtual
121
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
122
+ {
123
+ _checkNftType(policyNftId, POLICY());
124
+
125
+ (
126
+ NftId productNftId,
127
+ IInstance instance,
128
+ InstanceReader instanceReader,
129
+ InstanceStore instanceStore,
130
+ IPolicy.PolicyInfo memory policyInfo
131
+ ) = _verifyCallerWithPolicy(policyNftId);
132
+
133
+ // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
134
+
135
+ // check/update claim info
136
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
137
+ claimInfo.claimAmount = confirmedAmount;
138
+ claimInfo.processData = data;
139
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
140
+
141
+ // update and save policy info with instance
142
+ policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
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
+ }
149
+
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);
157
+ }
158
+
159
+
160
+ function decline(
161
+ NftId policyNftId,
162
+ ClaimId claimId,
163
+ bytes memory data // claim processing data
164
+ )
165
+ external
166
+ virtual
167
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
168
+ {
169
+ _checkNftType(policyNftId, POLICY());
170
+
171
+ (
172
+ ,
173
+ IInstance instance,
174
+ InstanceReader instanceReader,
175
+ InstanceStore instanceStore,
176
+ IPolicy.PolicyInfo memory policyInfo
177
+ ) = _verifyCallerWithPolicy(policyNftId);
178
+
179
+ // check/update claim info
180
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
181
+ claimInfo.processData = data;
182
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
183
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
184
+
185
+ // update and save policy info with instance
186
+ policyInfo.openClaimsCount -= 1;
187
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
188
+
189
+ emit LogClaimServiceClaimDeclined(policyNftId, claimId);
190
+ }
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
+
225
+ function close(
226
+ NftId policyNftId,
227
+ ClaimId claimId
228
+ )
229
+ external
230
+ virtual
231
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
232
+ {
233
+ _checkNftType(policyNftId, POLICY());
234
+
235
+ (
236
+ ,
237
+ IInstance instance,
238
+ InstanceReader instanceReader,
239
+ InstanceStore instanceStore,
240
+ IPolicy.PolicyInfo memory policyInfo
241
+ ) = _verifyCallerWithPolicy(policyNftId);
242
+
243
+ // check/update claim info
244
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, CONFIRMED());
245
+
246
+ // check claim has no open payouts
247
+ if(claimInfo.openPayoutsCount > 0) {
248
+ revert ErrorClaimServiceClaimWithOpenPayouts(
249
+ policyNftId,
250
+ claimId,
251
+ claimInfo.openPayoutsCount);
252
+ }
253
+
254
+ // check claim paid amount matches with claim amount
255
+ if(claimInfo.paidAmount.toInt() < claimInfo.claimAmount.toInt()) {
256
+ revert ErrorClaimServiceClaimWithMissingPayouts(
257
+ policyNftId,
258
+ claimId,
259
+ claimInfo.claimAmount,
260
+ claimInfo.paidAmount);
261
+ }
262
+
263
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
264
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
265
+ }
266
+
267
+
268
+ function createPayoutForBeneficiary(
269
+ NftId policyNftId,
270
+ ClaimId claimId,
271
+ Amount amount,
272
+ address beneficiary,
273
+ bytes memory data
274
+ )
275
+ external
276
+ virtual
277
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
278
+ returns (PayoutId payoutId)
279
+ {
280
+ _checkNftType(policyNftId, POLICY());
281
+
282
+ if (beneficiary == address(0)) {
283
+ revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
284
+ }
285
+
286
+ return _createPayout(
287
+ policyNftId,
288
+ claimId,
289
+ amount,
290
+ beneficiary,
291
+ data);
292
+ }
293
+
294
+
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);
314
+ }
315
+
316
+
317
+ function processPayout(
318
+ NftId policyNftId,
319
+ PayoutId payoutId
320
+ )
321
+ external
322
+ virtual
323
+ // nonReentrant() // prevents creating a reinsurance payout in a single tx
324
+ {
325
+ _checkNftType(policyNftId, POLICY());
326
+
327
+ (
328
+ ,
329
+ IInstance instance,
330
+ InstanceReader instanceReader,
331
+ InstanceStore instanceStore,
332
+ IPolicy.PolicyInfo memory policyInfo
333
+ ) = _verifyCallerWithPolicy(policyNftId);
334
+
335
+ // TODO add check that payout exists and is open
336
+ IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
337
+
338
+ // update and save payout info with instance
339
+ payoutInfo.paidAt = TimestampLib.blockTimestamp();
340
+ instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
341
+
342
+ Amount payoutAmount = payoutInfo.amount;
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
+ }
360
+ }
361
+
362
+ // update and save policy info with instance
363
+ policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
364
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
365
+
366
+ // inform pool about payout
367
+ _poolService.processPayout(
368
+ instance,
369
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
370
+ policyNftId,
371
+ policyInfo,
372
+ payoutAmount);
373
+
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.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
392
+
393
+ // TODO add 2nd token tx if processingFeeAmount > 0
394
+ }
395
+
396
+ // callback to policy holder if applicable
397
+ _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
398
+ }
399
+ }
400
+
401
+ // internal functions
402
+
403
+
404
+ function _createPayout(
405
+ NftId policyNftId,
406
+ ClaimId claimId,
407
+ Amount amount,
408
+ address beneficiary,
409
+ bytes memory data
410
+ )
411
+ internal
412
+ virtual
413
+ returns (PayoutId payoutId)
414
+ {
415
+ (
416
+ ,
417
+ ,
418
+ InstanceReader instanceReader,
419
+ InstanceStore instanceStore,
420
+ IPolicy.PolicyInfo memory policyInfo
421
+ ) = _verifyCallerWithPolicy(policyNftId);
422
+
423
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
424
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
425
+
426
+ // TODO add checks
427
+ // claim needs to be open
428
+ // claim.paidAmount + amount <= claim.claimAmount
429
+
430
+ // check/update claim info
431
+ // create payout info with instance
432
+ uint24 payoutNo = claimInfo.payoutsCount + 1;
433
+ payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
434
+ if (beneficiary == address(0)) {
435
+ beneficiary = getRegistry().ownerOf(policyNftId);
436
+ }
437
+
438
+ instanceStore.createPayout(
439
+ policyNftId,
440
+ payoutId,
441
+ IPolicy.PayoutInfo({
442
+ claimId: payoutId.toClaimId(),
443
+ amount: amount,
444
+ beneficiary: beneficiary,
445
+ data: data,
446
+ paidAt: TimestampLib.zero()}));
447
+
448
+ // update and save claim info with instance
449
+ claimInfo.payoutsCount += 1;
450
+ claimInfo.openPayoutsCount += 1;
451
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
452
+
453
+ // update and save policy info with instance
454
+ policyInfo.payoutAmount.add(amount);
455
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
456
+
457
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
458
+ }
459
+
460
+
461
+ function _calculatePayoutAmount(
462
+ InstanceReader instanceReader,
463
+ NftId policyNftId,
464
+ IPolicy.PolicyInfo memory policyInfo,
465
+ IPolicy.PayoutInfo memory payoutInfo
466
+ )
467
+ internal
468
+ returns (
469
+ Amount netPayoutAmount,
470
+ Amount processingFeeAmount,
471
+ address beneficiary
472
+ )
473
+ {
474
+ Amount payoutAmount = payoutInfo.amount;
475
+
476
+ if(payoutAmount.gtz()) {
477
+ NftId productNftId = policyInfo.productNftId;
478
+
479
+ // get pool component info from policy or product
480
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
481
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
482
+
483
+ netPayoutAmount = payoutAmount;
484
+
485
+ if (payoutInfo.beneficiary == address(0)) {
486
+ beneficiary = getRegistry().ownerOf(policyNftId);
487
+ } else {
488
+ beneficiary = payoutInfo.beneficiary;
489
+ }
490
+
491
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
492
+ if(FeeLib.gtz(productInfo.processingFee)) {
493
+ // TODO calculate and set net payout and processing fees
494
+ }
495
+ }
496
+ }
497
+
498
+
499
+ function _verifyCallerWithPolicy(
500
+ NftId policyNftId
501
+ )
502
+ internal
503
+ view
504
+ virtual
505
+ returns (
506
+ NftId productNftId,
507
+ IInstance instance,
508
+ InstanceReader instanceReader,
509
+ InstanceStore instanceStore,
510
+ IPolicy.PolicyInfo memory policyInfo
511
+ )
512
+ {
513
+ (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
514
+ instanceReader = instance.getInstanceReader();
515
+ instanceStore = instance.getInstanceStore();
516
+
517
+ // check caller(product) policy match
518
+ policyInfo = instanceReader.getPolicyInfo(policyNftId);
519
+ if(policyInfo.productNftId != productNftId) {
520
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
521
+ policyInfo.productNftId,
522
+ productNftId);
523
+ }
524
+ }
525
+
526
+ function _verifyClaim(
527
+ InstanceReader instanceReader,
528
+ NftId policyNftId,
529
+ ClaimId claimId,
530
+ StateId expectedState
531
+ )
532
+ internal
533
+ view
534
+ returns (
535
+ IPolicy.ClaimInfo memory claimInfo
536
+ )
537
+ {
538
+ // check claim is created state
539
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
540
+ if(claimState != expectedState) {
541
+ revert ErrorClaimServiceClaimNotInExpectedState(
542
+ policyNftId, claimId, expectedState, claimState);
543
+ }
544
+
545
+ // get claim info
546
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
547
+ }
548
+
549
+ function _processConfirmedClaimByPool(
550
+ InstanceReader instanceReader,
551
+ NftId productNftId,
552
+ NftId policyNftId,
553
+ ClaimId claimId,
554
+ Amount amount
555
+ )
556
+ internal
557
+ {
558
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
559
+ if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
560
+ address poolAddress = getRegistry().getObjectAddress(poolNftId);
561
+ IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
562
+ }
563
+ }
564
+
565
+
566
+ function _policyHolderClaimConfirmed(
567
+ NftId policyNftId,
568
+ ClaimId claimId,
569
+ Amount confirmedAmount
570
+ )
571
+ internal
572
+ {
573
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
574
+ if(address(policyHolder) != address(0)) {
575
+ policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
576
+ }
577
+ }
578
+
579
+
580
+ function _policyHolderPayoutExecuted(
581
+ NftId policyNftId,
582
+ PayoutId payoutId,
583
+ address beneficiary,
584
+ Amount payoutAmount
585
+ )
586
+ internal
587
+ {
588
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
589
+ if(address(policyHolder) != address(0)) {
590
+ policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
591
+ }
592
+ }
593
+
594
+
595
+ function _getPolicyHolder(NftId policyNftId)
596
+ internal
597
+ view
598
+ returns (IPolicyHolder policyHolder)
599
+ {
600
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
601
+ policyHolder = IPolicyHolder(policyHolderAddress);
602
+
603
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
604
+ policyHolder = IPolicyHolder(address(0));
605
+ }
606
+ }
607
+
608
+
609
+ function _getDomain() internal pure override returns(ObjectType) {
610
+ return CLAIM();
611
+ }
612
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {ClaimService} from "./ClaimService.sol";
7
+
8
+ contract ClaimServiceManager is ProxyManager {
9
+
10
+ ClaimService private _claimService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ ClaimService svc = new ClaimService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _claimService = ClaimService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getClaimService()
32
+ external
33
+ view
34
+ returns (ClaimService)
35
+ {
36
+ return _claimService;
37
+ }
38
+ }