@etherisc/gif-next 0.0.2-aa8d0c4-506 → 0.0.2-aac44b0-298

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 (701) hide show
  1. package/README.md +121 -18
  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 +1471 -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 +961 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +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 +474 -553
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +391 -169
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +362 -3048
  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 +1045 -380
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +487 -367
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +360 -106
  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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  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/{instance/service/IProductService.sol/IProductService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +391 -366
  102. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  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/base/ComponentServiceBase.sol/ComponentServiceBase.json → product/IApplicationService.sol/IApplicationService.json} +240 -204
  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/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +283 -266
  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/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → product/IRiskService.sol/IRiskService.json} +149 -162
  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 +606 -173
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +371 -205
  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 +938 -206
  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 +347 -322
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +340 -128
  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/shared/Component.sol/Component.json +695 -0
  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/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +209 -201
  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/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +346 -172
  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/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  210. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +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/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  228. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  230. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  231. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  232. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +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 +285 -0
  340. package/contracts/distribution/DistributionService.sol +355 -0
  341. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  342. package/contracts/distribution/IDistributionComponent.sol +52 -0
  343. package/contracts/distribution/IDistributionService.sol +101 -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/BundleSet.sol +126 -0
  355. package/contracts/instance/IInstance.sol +51 -24
  356. package/contracts/instance/IInstanceService.sol +58 -17
  357. package/contracts/instance/Instance.sol +164 -375
  358. package/contracts/instance/InstanceAdmin.sol +277 -0
  359. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  360. package/contracts/instance/InstanceReader.sol +271 -82
  361. package/contracts/instance/InstanceService.sol +356 -124
  362. package/contracts/instance/InstanceServiceManager.sol +14 -31
  363. package/contracts/instance/InstanceStore.sol +287 -0
  364. package/contracts/instance/base/BalanceStore.sol +123 -0
  365. package/contracts/instance/base/Cloneable.sol +28 -0
  366. package/contracts/instance/base/ObjectCounter.sol +21 -0
  367. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  368. package/contracts/instance/base/ObjectSet.sol +79 -0
  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 -48
  415. package/contracts/registry/IRegistryService.sol +45 -16
  416. package/contracts/registry/ITransferInterceptor.sol +1 -1
  417. package/contracts/registry/Registry.sol +540 -304
  418. package/contracts/registry/RegistryAdmin.sol +462 -0
  419. package/contracts/registry/RegistryService.sol +126 -284
  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 -84
  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 -31
  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/type/NftIdSet.sol +62 -0
  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/BaseComponent.sol/BaseComponent.json +0 -327
  491. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  492. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
  493. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  494. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  495. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  496. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
  497. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  498. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  499. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  500. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  501. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  502. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -873
  503. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  504. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  505. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  507. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  509. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  511. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  512. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  513. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  514. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  515. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  516. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  517. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  518. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  519. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  520. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  521. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  522. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  523. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  524. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  525. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  526. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  528. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  530. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  532. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  534. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  536. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  538. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  540. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  541. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  542. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  543. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  544. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  545. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  546. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  547. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  548. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  550. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  551. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  552. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  553. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  554. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  555. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  556. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  557. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  558. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  559. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  560. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  563. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  564. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -681
  565. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -436
  567. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -820
  573. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  575. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  576. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  577. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  578. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  579. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  580. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  581. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  582. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  583. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  584. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  585. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  586. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  587. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  588. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  589. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  590. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  591. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  592. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  593. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  594. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  595. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  596. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  597. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  598. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  599. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  600. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  601. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  602. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  603. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  604. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  605. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  606. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  608. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  610. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  612. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  614. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  615. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  616. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  618. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  619. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  620. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  622. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  624. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  626. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  628. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  630. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  632. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  634. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  636. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  638. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  640. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  642. package/contracts/components/BaseComponent.sol +0 -91
  643. package/contracts/components/Distribution.sol +0 -166
  644. package/contracts/components/IBaseComponent.sol +0 -25
  645. package/contracts/components/IDistributionComponent.sol +0 -46
  646. package/contracts/components/IPoolComponent.sol +0 -62
  647. package/contracts/components/IProductComponent.sol +0 -35
  648. package/contracts/components/Pool.sol +0 -247
  649. package/contracts/components/Product.sol +0 -297
  650. package/contracts/experiment/cloning/Cloner.sol +0 -47
  651. package/contracts/experiment/errors/Require.sol +0 -38
  652. package/contracts/experiment/errors/Revert.sol +0 -44
  653. package/contracts/experiment/inheritance/A.sol +0 -53
  654. package/contracts/experiment/inheritance/B.sol +0 -28
  655. package/contracts/experiment/inheritance/C.sol +0 -34
  656. package/contracts/experiment/inheritance/IA.sol +0 -13
  657. package/contracts/experiment/inheritance/IB.sol +0 -10
  658. package/contracts/experiment/inheritance/IC.sol +0 -12
  659. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  660. package/contracts/experiment/statemachine/ISM.sol +0 -25
  661. package/contracts/experiment/statemachine/SM.sol +0 -57
  662. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  663. package/contracts/experiment/types/TypeA.sol +0 -47
  664. package/contracts/experiment/types/TypeB.sol +0 -29
  665. package/contracts/instance/AccessManagedSimple.sol +0 -115
  666. package/contracts/instance/AccessManagerSimple.sol +0 -692
  667. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  668. package/contracts/instance/InstanceAccessManager.sol +0 -288
  669. package/contracts/instance/base/ComponentServiceBase.sol +0 -60
  670. package/contracts/instance/base/IInstanceBase.sol +0 -23
  671. package/contracts/instance/base/KeyValueStore.sol +0 -172
  672. package/contracts/instance/base/Lifecycle.sol +0 -100
  673. package/contracts/instance/module/ISetup.sol +0 -44
  674. package/contracts/instance/module/ITreasury.sol +0 -23
  675. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  676. package/contracts/instance/service/DistributionService.sol +0 -99
  677. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  678. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  679. package/contracts/instance/service/IDistributionService.sol +0 -12
  680. package/contracts/instance/service/IPoolService.sol +0 -37
  681. package/contracts/instance/service/IProductService.sol +0 -107
  682. package/contracts/instance/service/PoolService.sol +0 -205
  683. package/contracts/instance/service/PoolServiceManager.sol +0 -53
  684. package/contracts/shared/ContractDeployerLib.sol +0 -72
  685. package/contracts/shared/ERC165.sol +0 -25
  686. package/contracts/shared/ProxyManager.sol +0 -94
  687. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  688. package/contracts/shared/Versionable.sol +0 -147
  689. package/contracts/test/TestFee.sol +0 -25
  690. package/contracts/test/TestRegisterable.sol +0 -18
  691. package/contracts/test/TestRoleId.sol +0 -14
  692. package/contracts/test/TestService.sol +0 -24
  693. package/contracts/test/TestToken.sol +0 -26
  694. package/contracts/test/TestVersion.sol +0 -44
  695. package/contracts/test/TestVersionable.sol +0 -17
  696. package/contracts/types/ChainId.sol +0 -38
  697. package/contracts/types/NftIdSet.sol +0 -60
  698. package/contracts/types/NumberId.sol +0 -52
  699. package/contracts/types/ObjectType.sol +0 -152
  700. package/contracts/types/RoleId.sol +0 -89
  701. /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
+ }