@etherisc/gif-next 0.0.2-770fd3b-604 → 0.0.2-77438d0-071

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