@etherisc/gif-next 0.0.2-e2d8c7d-942 → 0.0.2-e30eae1-836

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 (732) hide show
  1. package/README.md +85 -23
  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/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +125 -11
  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 +1324 -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 +1018 -0
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1494 -0
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +862 -0
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +917 -0
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +984 -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 +1429 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -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 +1430 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -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 +311 -1361
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +383 -177
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +333 -3049
  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 +1022 -391
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +463 -531
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +352 -166
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3668 -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 +30 -112
  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 +961 -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/oracle/IOracleComponent.sol/IOracleComponent.json +776 -0
  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} +339 -294
  104. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  105. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +877 -0
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +982 -0
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +746 -0
  110. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1469 -0
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +850 -0
  118. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  119. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +964 -0
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  121. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  122. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  123. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1285 -0
  124. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/Pool.sol/Pool.json +1029 -0
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1635 -0
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +786 -0
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  131. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +787 -0
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +734 -0
  134. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  135. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -0
  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 +1439 -0
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  141. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +858 -0
  142. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  143. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +251 -241
  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 +931 -0
  148. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  149. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  151. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1005 -0
  152. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +150 -187
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  155. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1316 -0
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +802 -0
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  159. package/artifacts/contracts/product/PricingService.sol/PricingService.json +923 -0
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  162. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  163. package/artifacts/contracts/product/Product.sol/Product.json +1106 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  165. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  167. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -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 +655 -114
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +305 -233
  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 +989 -146
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  179. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  181. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +304 -335
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +343 -123
  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 +351 -100
  192. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → shared/Component.sol/Component.json} +369 -343
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1843 -0
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +834 -0
  198. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  199. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +158 -137
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IComponent.sol/IComponent.json} +291 -192
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  205. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1402 -0
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +711 -0
  208. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +96 -34
  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 +46 -26
  214. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  215. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  216. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +40 -31
  218. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  219. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  220. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IService.sol/IService.json +119 -165
  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 +799 -0
  226. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +129 -20
  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 +81 -30
  234. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  235. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  236. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +96 -48
  238. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  240. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Service.sol/Service.json +150 -176
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +734 -8
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  245. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  246. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  247. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  248. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  249. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  250. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  251. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  252. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  254. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  255. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  256. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  258. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  260. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  262. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1265 -0
  264. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +734 -0
  266. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  268. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  269. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  270. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  271. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  272. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  274. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  276. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  278. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  280. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  282. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  284. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  286. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  287. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  288. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  290. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  292. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  294. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  296. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  298. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  300. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  304. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  306. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  308. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  310. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  312. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  324. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  326. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  327. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  328. package/contracts/authorization/AccessAdmin.sol +596 -0
  329. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  330. package/contracts/authorization/Authorization.sol +289 -0
  331. package/contracts/authorization/IAccess.sol +49 -0
  332. package/contracts/authorization/IAccessAdmin.sol +137 -0
  333. package/contracts/authorization/IAuthorization.sol +60 -0
  334. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  335. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  336. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  337. package/contracts/distribution/BasicDistribution.sol +139 -0
  338. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  339. package/contracts/distribution/Distribution.sol +284 -0
  340. package/contracts/distribution/DistributionService.sol +354 -0
  341. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  342. package/contracts/distribution/IDistributionComponent.sol +52 -0
  343. package/contracts/distribution/IDistributionService.sol +100 -0
  344. package/contracts/examples/fire/DamageLevel.sol +59 -0
  345. package/contracts/examples/fire/FirePool.sol +86 -0
  346. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  347. package/contracts/examples/fire/FireProduct.sol +431 -0
  348. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  349. package/contracts/examples/fire/FireUSD.sol +26 -0
  350. package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
  351. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  352. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  353. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  354. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +40 -43
  355. package/contracts/instance/IInstance.sol +57 -51
  356. package/contracts/instance/IInstanceService.sol +57 -20
  357. package/contracts/instance/Instance.sol +162 -394
  358. package/contracts/instance/InstanceAdmin.sol +277 -0
  359. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  360. package/contracts/instance/InstanceReader.sol +264 -84
  361. package/contracts/instance/InstanceService.sol +335 -220
  362. package/contracts/instance/InstanceServiceManager.sol +14 -32
  363. package/contracts/instance/InstanceStore.sol +287 -0
  364. package/contracts/instance/base/BalanceStore.sol +123 -0
  365. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  366. package/contracts/instance/base/ObjectCounter.sol +21 -0
  367. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  368. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +20 -42
  369. package/contracts/instance/module/IAccess.sol +29 -21
  370. package/contracts/instance/module/IBundle.sol +8 -8
  371. package/contracts/instance/module/IComponents.sol +50 -0
  372. package/contracts/instance/module/IDistribution.sol +6 -4
  373. package/contracts/instance/module/IPolicy.sol +59 -19
  374. package/contracts/instance/module/IRisk.sol +1 -1
  375. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  376. package/contracts/oracle/BasicOracle.sol +47 -0
  377. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  378. package/contracts/oracle/IOracle.sol +36 -0
  379. package/contracts/oracle/IOracleComponent.sol +33 -0
  380. package/contracts/oracle/IOracleService.sol +66 -0
  381. package/contracts/oracle/Oracle.sol +156 -0
  382. package/contracts/oracle/OracleService.sol +292 -0
  383. package/contracts/oracle/OracleServiceManager.sol +39 -0
  384. package/contracts/pool/BasicPool.sol +175 -0
  385. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  386. package/contracts/pool/BundleService.sol +485 -0
  387. package/contracts/pool/BundleServiceManager.sol +39 -0
  388. package/contracts/pool/IBundleService.sol +140 -0
  389. package/contracts/pool/IPoolComponent.sol +62 -0
  390. package/contracts/pool/IPoolService.sol +172 -0
  391. package/contracts/pool/Pool.sol +345 -0
  392. package/contracts/pool/PoolService.sol +620 -0
  393. package/contracts/pool/PoolServiceManager.sol +39 -0
  394. package/contracts/product/ApplicationService.sol +259 -0
  395. package/contracts/product/ApplicationServiceManager.sol +38 -0
  396. package/contracts/product/BasicProduct.sol +49 -0
  397. package/contracts/product/BasicProductAuthorization.sol +42 -0
  398. package/contracts/product/ClaimService.sol +614 -0
  399. package/contracts/product/ClaimServiceManager.sol +38 -0
  400. package/contracts/product/IApplicationService.sol +63 -0
  401. package/contracts/product/IClaimService.sol +123 -0
  402. package/contracts/product/IPolicyService.sol +82 -0
  403. package/contracts/product/IPricingService.sol +39 -0
  404. package/contracts/product/IProductComponent.sol +59 -0
  405. package/contracts/product/IRiskService.sol +33 -0
  406. package/contracts/product/PolicyService.sol +695 -0
  407. package/contracts/product/PolicyServiceManager.sol +39 -0
  408. package/contracts/product/PricingService.sol +300 -0
  409. package/contracts/product/PricingServiceManager.sol +39 -0
  410. package/contracts/product/Product.sol +432 -0
  411. package/contracts/product/RiskService.sol +96 -0
  412. package/contracts/product/RiskServiceManager.sol +39 -0
  413. package/contracts/registry/ChainNft.sol +78 -33
  414. package/contracts/registry/IRegistry.sol +127 -35
  415. package/contracts/registry/IRegistryService.sol +40 -28
  416. package/contracts/registry/ITransferInterceptor.sol +1 -1
  417. package/contracts/registry/Registry.sol +550 -273
  418. package/contracts/registry/RegistryAdmin.sol +462 -0
  419. package/contracts/registry/RegistryService.sol +116 -233
  420. package/contracts/registry/RegistryServiceManager.sol +26 -53
  421. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  422. package/contracts/registry/ReleaseRegistry.sol +485 -0
  423. package/contracts/registry/ServiceAuthorizationV3.sol +203 -0
  424. package/contracts/registry/TokenRegistry.sol +261 -57
  425. package/contracts/shared/Component.sol +229 -0
  426. package/contracts/shared/ComponentService.sol +779 -0
  427. package/contracts/shared/ComponentServiceManager.sol +38 -0
  428. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  429. package/contracts/shared/ContractLib.sol +54 -0
  430. package/contracts/shared/IComponent.sol +67 -0
  431. package/contracts/shared/IComponentService.sol +130 -0
  432. package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
  433. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  434. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  435. package/contracts/shared/INftOwnable.sol +15 -12
  436. package/contracts/shared/IPolicyHolder.sol +35 -0
  437. package/contracts/shared/IRegisterable.sol +15 -6
  438. package/contracts/shared/IRegistryLinked.sol +11 -0
  439. package/contracts/shared/IService.sol +16 -6
  440. package/contracts/shared/InitializableERC165.sol +27 -0
  441. package/contracts/shared/InstanceLinkedComponent.sol +205 -0
  442. package/contracts/shared/KeyValueStore.sol +131 -0
  443. package/contracts/shared/Lifecycle.sol +88 -0
  444. package/contracts/shared/NftIdSet.sol +65 -0
  445. package/contracts/shared/NftOwnable.sol +75 -82
  446. package/contracts/shared/PolicyHolder.sol +62 -0
  447. package/contracts/shared/Registerable.sol +34 -41
  448. package/contracts/shared/RegistryLinked.sol +38 -0
  449. package/contracts/shared/Service.sol +61 -32
  450. package/contracts/shared/TokenHandler.sol +382 -12
  451. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  452. package/contracts/staking/IStaking.sol +173 -0
  453. package/contracts/staking/IStakingService.sol +157 -0
  454. package/contracts/staking/StakeManagerLib.sol +224 -0
  455. package/contracts/staking/Staking.sol +505 -0
  456. package/contracts/staking/StakingLifecycle.sol +23 -0
  457. package/contracts/staking/StakingManager.sol +52 -0
  458. package/contracts/staking/StakingReader.sol +190 -0
  459. package/contracts/staking/StakingService.sol +453 -0
  460. package/contracts/staking/StakingServiceManager.sol +44 -0
  461. package/contracts/staking/StakingStore.sol +605 -0
  462. package/contracts/staking/TargetManagerLib.sol +211 -0
  463. package/contracts/{types → type}/AddressSet.sol +1 -1
  464. package/contracts/type/Amount.sol +150 -0
  465. package/contracts/{types → type}/Blocknumber.sol +27 -3
  466. package/contracts/type/ClaimId.sol +80 -0
  467. package/contracts/{types → type}/DistributorType.sol +2 -2
  468. package/contracts/{types → type}/Fee.sol +33 -23
  469. package/contracts/{types → type}/NftId.sol +22 -15
  470. package/contracts/{types → type}/NftIdSet.sol +2 -2
  471. package/contracts/type/ObjectType.sol +276 -0
  472. package/contracts/type/PayoutId.sol +82 -0
  473. package/contracts/{types → type}/Referral.sol +6 -1
  474. package/contracts/type/RequestId.sol +75 -0
  475. package/contracts/{types → type}/RiskId.sol +17 -3
  476. package/contracts/type/RoleId.sol +162 -0
  477. package/contracts/type/Seconds.sol +101 -0
  478. package/contracts/type/Selector.sol +102 -0
  479. package/contracts/{types → type}/StateId.sol +48 -4
  480. package/contracts/type/String.sol +53 -0
  481. package/contracts/{types → type}/Timestamp.sol +34 -15
  482. package/contracts/{types → type}/UFixed.sol +39 -9
  483. package/contracts/{types → type}/Version.sol +5 -2
  484. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  485. package/contracts/upgradeability/ProxyManager.sol +232 -0
  486. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  487. package/contracts/upgradeability/Versionable.sol +59 -0
  488. package/package.json +11 -7
  489. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  490. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  491. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  492. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  493. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
  494. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  495. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  496. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  497. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  498. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  499. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  500. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  501. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  502. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  503. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  504. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  506. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  508. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  510. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  512. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  514. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  516. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  518. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  520. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  522. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  524. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  526. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  527. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  528. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  529. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  530. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  531. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  532. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  533. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  534. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  535. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  536. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  537. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  538. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  539. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  540. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  541. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  542. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  543. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  544. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  545. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  546. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -788
  547. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  548. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  549. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  550. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  551. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  552. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  553. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  554. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  555. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  556. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  557. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  558. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  559. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  560. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  561. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  562. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  563. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  564. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  565. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -923
  569. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -440
  571. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  573. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  575. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  577. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  578. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  581. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -499
  584. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  585. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  587. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  589. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -718
  591. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  592. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -428
  593. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  594. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -768
  595. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  596. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  597. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  598. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  599. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  600. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  601. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  602. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  603. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  604. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  605. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  606. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  607. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  608. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  609. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  610. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  611. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  612. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  613. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  614. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  615. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  616. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  617. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  619. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  620. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  621. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  622. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  623. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  624. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  625. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  626. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  627. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  628. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  629. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  631. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  633. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  634. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  635. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  636. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  637. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  638. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  639. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  640. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  641. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  642. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  643. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  645. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  647. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  649. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  651. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  653. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  654. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  655. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  656. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  657. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  658. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  659. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  661. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  663. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  665. package/contracts/components/BaseComponent.sol +0 -132
  666. package/contracts/components/Distribution.sol +0 -163
  667. package/contracts/components/IBaseComponent.sol +0 -31
  668. package/contracts/components/IDistributionComponent.sol +0 -44
  669. package/contracts/components/IPoolComponent.sol +0 -66
  670. package/contracts/components/IProductComponent.sol +0 -35
  671. package/contracts/components/Pool.sol +0 -271
  672. package/contracts/components/Product.sol +0 -292
  673. package/contracts/experiment/cloning/Cloner.sol +0 -47
  674. package/contracts/experiment/errors/Require.sol +0 -38
  675. package/contracts/experiment/errors/Revert.sol +0 -44
  676. package/contracts/experiment/inheritance/A.sol +0 -53
  677. package/contracts/experiment/inheritance/B.sol +0 -28
  678. package/contracts/experiment/inheritance/C.sol +0 -34
  679. package/contracts/experiment/inheritance/IA.sol +0 -13
  680. package/contracts/experiment/inheritance/IB.sol +0 -10
  681. package/contracts/experiment/inheritance/IC.sol +0 -12
  682. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  683. package/contracts/experiment/statemachine/ISM.sol +0 -25
  684. package/contracts/experiment/statemachine/SM.sol +0 -57
  685. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  686. package/contracts/experiment/types/TypeA.sol +0 -47
  687. package/contracts/experiment/types/TypeB.sol +0 -29
  688. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  689. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  690. package/contracts/instance/IInstanceBase.sol +0 -26
  691. package/contracts/instance/InstanceAccessManager.sol +0 -288
  692. package/contracts/instance/InstanceBase.sol +0 -41
  693. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  694. package/contracts/instance/base/IInstanceBase.sol +0 -23
  695. package/contracts/instance/base/KeyValueStore.sol +0 -172
  696. package/contracts/instance/base/Lifecycle.sol +0 -100
  697. package/contracts/instance/module/ISetup.sol +0 -46
  698. package/contracts/instance/module/ITreasury.sol +0 -23
  699. package/contracts/instance/service/BundleService.sol +0 -260
  700. package/contracts/instance/service/BundleServiceManager.sol +0 -54
  701. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  702. package/contracts/instance/service/DistributionService.sol +0 -118
  703. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  704. package/contracts/instance/service/IBundleService.sol +0 -45
  705. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  706. package/contracts/instance/service/IDistributionService.sol +0 -12
  707. package/contracts/instance/service/IPolicyService.sol +0 -87
  708. package/contracts/instance/service/IPoolService.sol +0 -20
  709. package/contracts/instance/service/IProductService.sol +0 -40
  710. package/contracts/instance/service/PolicyService.sol +0 -508
  711. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  712. package/contracts/instance/service/PoolService.sol +0 -124
  713. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  714. package/contracts/instance/service/ProductService.sol +0 -173
  715. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  716. package/contracts/shared/ContractDeployerLib.sol +0 -72
  717. package/contracts/shared/ERC165.sol +0 -25
  718. package/contracts/shared/ProxyManager.sol +0 -94
  719. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  720. package/contracts/shared/Versionable.sol +0 -147
  721. package/contracts/test/TestFee.sol +0 -25
  722. package/contracts/test/TestRegisterable.sol +0 -18
  723. package/contracts/test/TestRoleId.sol +0 -14
  724. package/contracts/test/TestService.sol +0 -24
  725. package/contracts/test/TestToken.sol +0 -26
  726. package/contracts/test/TestVersion.sol +0 -44
  727. package/contracts/test/TestVersionable.sol +0 -17
  728. package/contracts/types/ChainId.sol +0 -38
  729. package/contracts/types/NumberId.sol +0 -52
  730. package/contracts/types/ObjectType.sol +0 -152
  731. package/contracts/types/RoleId.sol +0 -92
  732. /package/contracts/{types → type}/Key32.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
+ }
@@ -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
+ }