@etherisc/gif-next 0.0.2-b28f7c7-340 → 0.0.2-b312c9a-831

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 (707) hide show
  1. package/README.md +77 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1000 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +767 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1292 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  33. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → distribution/Distribution.sol/Distribution.json} +333 -316
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1494 -0
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +862 -0
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +885 -0
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  41. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +221 -327
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1441 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1991 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1145 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2293 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +350 -1997
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +189 -113
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +406 -2791
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1684 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1328 -331
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +264 -425
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +156 -151
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3668 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  100. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  108. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +929 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +744 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  118. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +282 -179
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  120. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +256 -253
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  126. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +325 -479
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1360 -0
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +323 -60
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  136. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → pool/IPoolComponent.sol/IPoolComponent.json} +333 -286
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1285 -0
  139. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  140. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +353 -420
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1619 -0
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +794 -0
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +806 -0
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  150. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +391 -442
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1439 -0
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +858 -0
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  158. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +117 -166
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  162. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPolicyService.sol/IPolicyService.json} +485 -385
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +973 -0
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  168. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +41 -62
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1313 -0
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +810 -0
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  174. package/artifacts/contracts/product/PricingService.sol/PricingService.json +923 -0
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  176. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  177. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  178. package/artifacts/contracts/product/Product.sol/Product.json +1074 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +457 -27
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +263 -110
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +949 -128
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +349 -245
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +161 -94
  199. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  201. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  203. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  205. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  207. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  208. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +274 -204
  209. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1574 -0
  211. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +818 -0
  213. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  214. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +124 -125
  215. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  221. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  222. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +128 -131
  223. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1197 -0
  225. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +679 -0
  227. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  228. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  229. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  230. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -10
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +28 -6
  237. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  239. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IService.sol/IService.json +46 -6
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  242. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  244. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +767 -0
  245. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  246. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  247. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  248. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  249. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  250. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  251. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  252. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +28 -70
  253. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  254. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  255. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +69 -99
  257. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  258. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  259. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Service.sol/Service.json +58 -112
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +734 -8
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  265. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  266. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  267. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  268. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → staking/IStaking.sol/IStaking.json} +695 -607
  269. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  270. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  271. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  272. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  273. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  274. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  275. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  276. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  277. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  278. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  279. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  280. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  281. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  282. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1265 -0
  283. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  284. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +734 -0
  285. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  286. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  287. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  288. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  289. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  290. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  291. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  293. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  294. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  295. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  296. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  297. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  298. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  299. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  300. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  301. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  302. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  303. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  304. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  305. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  306. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  307. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  308. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  309. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  310. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  311. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  312. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  313. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  314. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  315. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  316. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  317. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  318. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +180 -0
  319. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  320. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  321. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  322. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  323. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  324. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  325. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  327. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  328. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  329. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  330. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  331. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  332. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  333. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  334. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  336. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  337. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  338. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  340. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  341. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  342. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  344. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  345. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  346. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  347. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  348. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  349. package/contracts/accounting/AccountingService.sol +264 -0
  350. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  351. package/contracts/accounting/IAccountingService.sol +45 -0
  352. package/contracts/authorization/AccessAdmin.sol +616 -0
  353. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  354. package/contracts/authorization/Authorization.sol +289 -0
  355. package/contracts/authorization/IAccess.sol +49 -0
  356. package/contracts/authorization/IAccessAdmin.sol +137 -0
  357. package/contracts/authorization/IAuthorization.sol +60 -0
  358. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  359. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  360. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  361. package/contracts/distribution/BasicDistribution.sol +139 -0
  362. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  363. package/contracts/{components → distribution}/Distribution.sol +170 -163
  364. package/contracts/distribution/DistributionService.sol +357 -0
  365. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  366. package/contracts/distribution/IDistributionComponent.sol +52 -0
  367. package/contracts/{instance/service → distribution}/IDistributionService.sol +35 -34
  368. package/contracts/examples/fire/DamageLevel.sol +59 -0
  369. package/contracts/examples/fire/FirePool.sol +90 -0
  370. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  371. package/contracts/examples/fire/FireProduct.sol +436 -0
  372. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  373. package/contracts/examples/fire/FireUSD.sol +26 -0
  374. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  375. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  376. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  377. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  378. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  379. package/contracts/examples/unpermissioned/SimpleProduct.sol +352 -0
  380. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  381. package/contracts/instance/BundleSet.sol +130 -0
  382. package/contracts/instance/IInstance.sol +45 -72
  383. package/contracts/instance/IInstanceService.sol +37 -39
  384. package/contracts/instance/Instance.sol +162 -250
  385. package/contracts/instance/InstanceAdmin.sol +285 -0
  386. package/contracts/instance/InstanceAuthorizationV3.sol +222 -0
  387. package/contracts/instance/InstanceReader.sol +349 -61
  388. package/contracts/instance/InstanceService.sol +249 -353
  389. package/contracts/instance/InstanceServiceManager.sol +14 -29
  390. package/contracts/instance/InstanceStore.sol +287 -0
  391. package/contracts/instance/RiskSet.sol +119 -0
  392. package/contracts/instance/base/BalanceStore.sol +123 -0
  393. package/contracts/instance/base/Cloneable.sol +28 -0
  394. package/contracts/instance/base/ObjectCounter.sol +21 -0
  395. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  396. package/contracts/instance/base/ObjectSet.sol +78 -0
  397. package/contracts/instance/module/IAccess.sol +4 -12
  398. package/contracts/instance/module/IBundle.sol +6 -9
  399. package/contracts/instance/module/IComponents.sol +27 -18
  400. package/contracts/instance/module/IDistribution.sol +6 -6
  401. package/contracts/instance/module/IPolicy.sol +48 -35
  402. package/contracts/instance/module/IRisk.sol +2 -1
  403. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  404. package/contracts/oracle/BasicOracle.sol +47 -0
  405. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  406. package/contracts/oracle/IOracle.sol +36 -0
  407. package/contracts/oracle/IOracleComponent.sol +33 -0
  408. package/contracts/oracle/IOracleService.sol +66 -0
  409. package/contracts/oracle/Oracle.sol +156 -0
  410. package/contracts/oracle/OracleService.sol +309 -0
  411. package/contracts/oracle/OracleServiceManager.sol +39 -0
  412. package/contracts/pool/BasicPool.sol +175 -0
  413. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  414. package/contracts/pool/BundleService.sol +425 -0
  415. package/contracts/pool/BundleServiceManager.sol +39 -0
  416. package/contracts/pool/IBundleService.sol +121 -0
  417. package/contracts/pool/IPoolComponent.sol +62 -0
  418. package/contracts/pool/IPoolService.sol +153 -0
  419. package/contracts/pool/Pool.sol +345 -0
  420. package/contracts/pool/PoolService.sol +615 -0
  421. package/contracts/pool/PoolServiceManager.sol +39 -0
  422. package/contracts/product/ApplicationService.sol +259 -0
  423. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  424. package/contracts/product/BasicProduct.sol +49 -0
  425. package/contracts/product/BasicProductAuthorization.sol +41 -0
  426. package/contracts/product/ClaimService.sol +614 -0
  427. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  428. package/contracts/{instance/service → product}/IApplicationService.sol +19 -35
  429. package/contracts/product/IClaimService.sol +123 -0
  430. package/contracts/product/IPolicyService.sol +90 -0
  431. package/contracts/product/IPricingService.sol +39 -0
  432. package/contracts/product/IProductComponent.sol +59 -0
  433. package/contracts/product/IRiskService.sol +33 -0
  434. package/contracts/product/PolicyService.sol +736 -0
  435. package/contracts/product/PolicyServiceManager.sol +39 -0
  436. package/contracts/product/PricingService.sol +300 -0
  437. package/contracts/product/PricingServiceManager.sol +39 -0
  438. package/contracts/product/Product.sol +427 -0
  439. package/contracts/product/RiskService.sol +107 -0
  440. package/contracts/product/RiskServiceManager.sol +39 -0
  441. package/contracts/registry/ChainNft.sol +75 -38
  442. package/contracts/registry/IRegistry.sol +98 -26
  443. package/contracts/registry/IRegistryService.sol +34 -40
  444. package/contracts/registry/ITransferInterceptor.sol +1 -2
  445. package/contracts/registry/Registry.sol +453 -195
  446. package/contracts/registry/RegistryAdmin.sol +457 -0
  447. package/contracts/registry/RegistryService.sol +87 -128
  448. package/contracts/registry/RegistryServiceManager.sol +23 -32
  449. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  450. package/contracts/registry/ReleaseRegistry.sol +485 -0
  451. package/contracts/registry/ServiceAuthorizationV3.sol +207 -0
  452. package/contracts/registry/TokenRegistry.sol +261 -62
  453. package/contracts/shared/Component.sol +219 -0
  454. package/contracts/shared/ComponentService.sol +693 -0
  455. package/contracts/shared/ComponentServiceManager.sol +38 -0
  456. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  457. package/contracts/shared/ContractLib.sol +224 -0
  458. package/contracts/shared/IComponent.sol +62 -0
  459. package/contracts/shared/IComponentService.sol +116 -0
  460. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  461. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  462. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  463. package/contracts/shared/INftOwnable.sol +4 -2
  464. package/contracts/shared/IPolicyHolder.sol +23 -14
  465. package/contracts/shared/IRegisterable.sol +11 -0
  466. package/contracts/shared/IRegistryLinked.sol +0 -1
  467. package/contracts/shared/IService.sol +12 -3
  468. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  469. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  470. package/contracts/shared/KeyValueStore.sol +131 -0
  471. package/contracts/shared/Lifecycle.sol +88 -0
  472. package/contracts/shared/NftIdSet.sol +65 -0
  473. package/contracts/shared/NftOwnable.sol +32 -25
  474. package/contracts/shared/PolicyHolder.sol +22 -41
  475. package/contracts/shared/Registerable.sol +32 -23
  476. package/contracts/shared/RegistryLinked.sol +9 -19
  477. package/contracts/shared/Service.sol +48 -36
  478. package/contracts/shared/TokenHandler.sol +368 -12
  479. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  480. package/contracts/staking/IStaking.sol +173 -0
  481. package/contracts/staking/IStakingService.sol +157 -0
  482. package/contracts/staking/StakeManagerLib.sol +224 -0
  483. package/contracts/staking/Staking.sol +515 -0
  484. package/contracts/staking/StakingLifecycle.sol +23 -0
  485. package/contracts/staking/StakingManager.sol +52 -0
  486. package/contracts/staking/StakingReader.sol +190 -0
  487. package/contracts/staking/StakingService.sol +440 -0
  488. package/contracts/staking/StakingServiceManager.sol +44 -0
  489. package/contracts/staking/StakingStore.sol +605 -0
  490. package/contracts/staking/TargetManagerLib.sol +211 -0
  491. package/contracts/{types → type}/AddressSet.sol +1 -1
  492. package/contracts/type/Amount.sol +150 -0
  493. package/contracts/{types → type}/Blocknumber.sol +26 -3
  494. package/contracts/{types → type}/ClaimId.sol +31 -3
  495. package/contracts/{types → type}/Fee.sol +24 -22
  496. package/contracts/{types → type}/Key32.sol +2 -2
  497. package/contracts/type/Key32Set.sol +62 -0
  498. package/contracts/{types → type}/NftId.sol +21 -16
  499. package/contracts/{types → type}/NftIdSet.sol +2 -2
  500. package/contracts/type/ObjectType.sol +286 -0
  501. package/contracts/type/PayoutId.sol +82 -0
  502. package/contracts/{types → type}/Referral.sol +2 -1
  503. package/contracts/type/RequestId.sol +75 -0
  504. package/contracts/{types → type}/RiskId.sol +31 -5
  505. package/contracts/type/RoleId.sol +162 -0
  506. package/contracts/type/Seconds.sol +101 -0
  507. package/contracts/type/Selector.sol +102 -0
  508. package/contracts/{types → type}/StateId.sol +47 -4
  509. package/contracts/type/String.sol +53 -0
  510. package/contracts/{types → type}/Timestamp.sol +21 -2
  511. package/contracts/{types → type}/UFixed.sol +38 -9
  512. package/contracts/{types → type}/Version.sol +4 -2
  513. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  514. package/contracts/{shared → upgradeability}/ProxyManager.sol +93 -30
  515. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  516. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  517. package/package.json +11 -7
  518. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  519. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  520. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  521. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  522. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  523. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  524. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  525. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  526. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  527. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  528. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  529. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  530. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  531. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  532. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  533. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  534. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  535. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  538. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  539. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  540. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  541. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  542. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  544. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  545. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  547. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  549. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  551. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  552. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  553. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  554. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  555. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  556. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  557. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  558. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  559. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  560. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  561. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  563. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  564. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  565. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  570. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  572. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  574. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  576. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  578. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  580. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  581. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  582. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  583. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  584. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  585. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  586. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  587. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  588. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  589. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  590. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  591. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  592. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  593. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  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 -383
  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 -596
  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 -104
  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/Amount.sol/AmountLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  614. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  616. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  618. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  620. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  622. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  624. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  626. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  628. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  629. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  630. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  632. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  634. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  636. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  638. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  640. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  642. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  644. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  646. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  648. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  649. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  650. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  652. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  653. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  654. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  656. package/contracts/components/Component.sol +0 -253
  657. package/contracts/components/IComponent.sol +0 -76
  658. package/contracts/components/IDistributionComponent.sol +0 -71
  659. package/contracts/components/IPoolComponent.sol +0 -113
  660. package/contracts/components/IProductComponent.sol +0 -40
  661. package/contracts/components/Pool.sol +0 -303
  662. package/contracts/components/Product.sol +0 -293
  663. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  664. package/contracts/instance/BundleManager.sol +0 -127
  665. package/contracts/instance/Cloneable.sol +0 -51
  666. package/contracts/instance/InstanceAccessManager.sol +0 -527
  667. package/contracts/instance/ObjectManager.sol +0 -82
  668. package/contracts/instance/base/ComponentService.sol +0 -121
  669. package/contracts/instance/base/KeyValueStore.sol +0 -180
  670. package/contracts/instance/base/Lifecycle.sol +0 -109
  671. package/contracts/instance/module/ISetup.sol +0 -33
  672. package/contracts/instance/module/ITreasury.sol +0 -23
  673. package/contracts/instance/service/ApplicationService.sol +0 -350
  674. package/contracts/instance/service/BundleService.sol +0 -431
  675. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  676. package/contracts/instance/service/ClaimService.sol +0 -151
  677. package/contracts/instance/service/DistributionService.sol +0 -435
  678. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  679. package/contracts/instance/service/IBundleService.sol +0 -93
  680. package/contracts/instance/service/IClaimService.sol +0 -61
  681. package/contracts/instance/service/IPolicyService.sol +0 -72
  682. package/contracts/instance/service/IPoolService.sol +0 -99
  683. package/contracts/instance/service/IProductService.sol +0 -40
  684. package/contracts/instance/service/PolicyService.sol +0 -362
  685. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  686. package/contracts/instance/service/PoolService.sol +0 -303
  687. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  688. package/contracts/instance/service/ProductService.sol +0 -210
  689. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  690. package/contracts/registry/RegistryAccessManager.sol +0 -216
  691. package/contracts/registry/ReleaseManager.sol +0 -324
  692. package/contracts/shared/ContractDeployerLib.sol +0 -72
  693. package/contracts/test/TestFee.sol +0 -25
  694. package/contracts/test/TestRegisterable.sol +0 -18
  695. package/contracts/test/TestRoleId.sol +0 -14
  696. package/contracts/test/TestService.sol +0 -25
  697. package/contracts/test/TestToken.sol +0 -26
  698. package/contracts/test/TestVersion.sol +0 -44
  699. package/contracts/test/TestVersionable.sol +0 -17
  700. package/contracts/types/Amount.sol +0 -60
  701. package/contracts/types/ChainId.sol +0 -38
  702. package/contracts/types/NumberId.sol +0 -52
  703. package/contracts/types/ObjectType.sol +0 -157
  704. package/contracts/types/PayoutId.sol +0 -54
  705. package/contracts/types/RoleId.sol +0 -97
  706. package/contracts/types/Seconds.sol +0 -54
  707. /package/contracts/{types → type}/DistributorType.sol +0 -0
@@ -0,0 +1,614 @@
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.pushToken(
392
+ beneficiary,
393
+ netPayoutAmount);
394
+
395
+ // TODO add 2nd token tx if processingFeeAmount > 0
396
+ }
397
+
398
+ // callback to policy holder if applicable
399
+ _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
400
+ }
401
+ }
402
+
403
+ // internal functions
404
+
405
+
406
+ function _createPayout(
407
+ NftId policyNftId,
408
+ ClaimId claimId,
409
+ Amount amount,
410
+ address beneficiary,
411
+ bytes memory data
412
+ )
413
+ internal
414
+ virtual
415
+ returns (PayoutId payoutId)
416
+ {
417
+ (
418
+ ,
419
+ ,
420
+ InstanceReader instanceReader,
421
+ InstanceStore instanceStore,
422
+ IPolicy.PolicyInfo memory policyInfo
423
+ ) = _verifyCallerWithPolicy(policyNftId);
424
+
425
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
426
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
427
+
428
+ // TODO add checks
429
+ // claim needs to be open
430
+ // claim.paidAmount + amount <= claim.claimAmount
431
+
432
+ // check/update claim info
433
+ // create payout info with instance
434
+ uint24 payoutNo = claimInfo.payoutsCount + 1;
435
+ payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
436
+ if (beneficiary == address(0)) {
437
+ beneficiary = getRegistry().ownerOf(policyNftId);
438
+ }
439
+
440
+ instanceStore.createPayout(
441
+ policyNftId,
442
+ payoutId,
443
+ IPolicy.PayoutInfo({
444
+ claimId: payoutId.toClaimId(),
445
+ amount: amount,
446
+ beneficiary: beneficiary,
447
+ data: data,
448
+ paidAt: TimestampLib.zero()}));
449
+
450
+ // update and save claim info with instance
451
+ claimInfo.payoutsCount += 1;
452
+ claimInfo.openPayoutsCount += 1;
453
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
454
+
455
+ // update and save policy info with instance
456
+ policyInfo.payoutAmount.add(amount);
457
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
458
+
459
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
460
+ }
461
+
462
+
463
+ function _calculatePayoutAmount(
464
+ InstanceReader instanceReader,
465
+ NftId policyNftId,
466
+ IPolicy.PolicyInfo memory policyInfo,
467
+ IPolicy.PayoutInfo memory payoutInfo
468
+ )
469
+ internal
470
+ returns (
471
+ Amount netPayoutAmount,
472
+ Amount processingFeeAmount,
473
+ address beneficiary
474
+ )
475
+ {
476
+ Amount payoutAmount = payoutInfo.amount;
477
+
478
+ if(payoutAmount.gtz()) {
479
+ NftId productNftId = policyInfo.productNftId;
480
+
481
+ // get pool component info from policy or product
482
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
483
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
484
+
485
+ netPayoutAmount = payoutAmount;
486
+
487
+ if (payoutInfo.beneficiary == address(0)) {
488
+ beneficiary = getRegistry().ownerOf(policyNftId);
489
+ } else {
490
+ beneficiary = payoutInfo.beneficiary;
491
+ }
492
+
493
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
494
+ if(FeeLib.gtz(productInfo.processingFee)) {
495
+ // TODO calculate and set net payout and processing fees
496
+ }
497
+ }
498
+ }
499
+
500
+
501
+ function _verifyCallerWithPolicy(
502
+ NftId policyNftId
503
+ )
504
+ internal
505
+ view
506
+ virtual
507
+ returns (
508
+ NftId productNftId,
509
+ IInstance instance,
510
+ InstanceReader instanceReader,
511
+ InstanceStore instanceStore,
512
+ IPolicy.PolicyInfo memory policyInfo
513
+ )
514
+ {
515
+ (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
516
+ instanceReader = instance.getInstanceReader();
517
+ instanceStore = instance.getInstanceStore();
518
+
519
+ // check caller(product) policy match
520
+ policyInfo = instanceReader.getPolicyInfo(policyNftId);
521
+ if(policyInfo.productNftId != productNftId) {
522
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
523
+ policyInfo.productNftId,
524
+ productNftId);
525
+ }
526
+ }
527
+
528
+ function _verifyClaim(
529
+ InstanceReader instanceReader,
530
+ NftId policyNftId,
531
+ ClaimId claimId,
532
+ StateId expectedState
533
+ )
534
+ internal
535
+ view
536
+ returns (
537
+ IPolicy.ClaimInfo memory claimInfo
538
+ )
539
+ {
540
+ // check claim is created state
541
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
542
+ if(claimState != expectedState) {
543
+ revert ErrorClaimServiceClaimNotInExpectedState(
544
+ policyNftId, claimId, expectedState, claimState);
545
+ }
546
+
547
+ // get claim info
548
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
549
+ }
550
+
551
+ function _processConfirmedClaimByPool(
552
+ InstanceReader instanceReader,
553
+ NftId productNftId,
554
+ NftId policyNftId,
555
+ ClaimId claimId,
556
+ Amount amount
557
+ )
558
+ internal
559
+ {
560
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
561
+ if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
562
+ address poolAddress = getRegistry().getObjectAddress(poolNftId);
563
+ IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
564
+ }
565
+ }
566
+
567
+
568
+ function _policyHolderClaimConfirmed(
569
+ NftId policyNftId,
570
+ ClaimId claimId,
571
+ Amount confirmedAmount
572
+ )
573
+ internal
574
+ {
575
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
576
+ if(address(policyHolder) != address(0)) {
577
+ policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
578
+ }
579
+ }
580
+
581
+
582
+ function _policyHolderPayoutExecuted(
583
+ NftId policyNftId,
584
+ PayoutId payoutId,
585
+ address beneficiary,
586
+ Amount payoutAmount
587
+ )
588
+ internal
589
+ {
590
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
591
+ if(address(policyHolder) != address(0)) {
592
+ policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
593
+ }
594
+ }
595
+
596
+
597
+ function _getPolicyHolder(NftId policyNftId)
598
+ internal
599
+ view
600
+ returns (IPolicyHolder policyHolder)
601
+ {
602
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
603
+ policyHolder = IPolicyHolder(policyHolderAddress);
604
+
605
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
606
+ policyHolder = IPolicyHolder(address(0));
607
+ }
608
+ }
609
+
610
+
611
+ function _getDomain() internal pure override returns(ObjectType) {
612
+ return CLAIM();
613
+ }
614
+ }
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../../shared/IVersionable.sol";
5
- import {ProxyManager} from "../../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {ClaimService} from "./ClaimService.sol";
7
7
 
8
8
  contract ClaimServiceManager is ProxyManager {
@@ -11,15 +11,18 @@ contract ClaimServiceManager is ProxyManager {
11
11
 
12
12
  /// @dev initializes proxy manager with service implementation
13
13
  constructor(
14
- address registryAddress
15
- )
16
- ProxyManager(registryAddress)
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
17
18
  {
18
- ClaimService svc = new ClaimService();
19
- bytes memory data = abi.encode(registryAddress, address(this));
20
- IVersionable versionable = deploy(
19
+ ClaimService svc = new ClaimService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
21
23
  address(svc),
22
- data);
24
+ data,
25
+ salt);
23
26
 
24
27
  _claimService = ClaimService(address(versionable));
25
28
  }