@etherisc/gif-next 0.0.2-aa0bd77 → 0.0.2-aa7068b-175

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 (648) hide show
  1. package/README.md +427 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1494 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → authorization/AccessAdmin.sol/IAccessManagedChecker.json} +4 -4
  12. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +615 -0
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  19. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1224 -0
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +382 -0
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1338 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +644 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1016 -0
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1525 -0
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +872 -0
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +915 -0
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1008 -0
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1491 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2048 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1495 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1671 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2448 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +413 -487
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +789 -0
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +553 -561
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2036 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +716 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2429 -0
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3718 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  104. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  105. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  106. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  108. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  109. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  110. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  111. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  112. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  113. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -0
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +774 -0
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +875 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1013 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +772 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1277 -0
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +808 -0
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +880 -0
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +907 -0
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  144. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  145. package/artifacts/contracts/pool/Pool.sol/Pool.json +1027 -0
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1590 -0
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +816 -0
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +829 -0
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +736 -0
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  159. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1512 -0
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +856 -0
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +597 -0
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +981 -0
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  171. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +602 -0
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  173. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1018 -0
  174. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  175. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +459 -0
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1349 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +816 -0
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingService.sol/PricingService.json +946 -0
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +792 -0
  186. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  187. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskService.sol/RiskService.json +659 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +732 -0
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  193. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  195. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1054 -123
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  197. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1043 -0
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  199. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  200. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  201. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  202. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/Registry.sol/Registry.json +1559 -161
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2018 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  209. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1269 -0
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  211. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +735 -0
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  214. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  216. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1337 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  219. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  221. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  222. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  223. package/artifacts/contracts/shared/Component.sol/Component.json +707 -0
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1532 -0
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  228. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +597 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  233. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  234. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  235. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  236. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  237. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  238. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +632 -0
  240. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  241. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1180 -0
  242. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  244. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  245. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  246. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  248. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  249. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +147 -0
  250. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  251. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  252. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  253. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +329 -0
  254. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  255. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  256. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  257. package/artifacts/contracts/shared/IService.sol/IService.json +399 -0
  258. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  259. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  260. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  261. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +797 -0
  262. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  263. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  264. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  265. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  266. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  267. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  268. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  269. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  270. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  271. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  272. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  273. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +378 -0
  274. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  275. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  276. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  277. package/artifacts/contracts/shared/Service.sol/Service.json +453 -0
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  280. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  281. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  282. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  283. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  284. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
  286. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  287. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1096 -0
  288. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  290. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  291. package/artifacts/contracts/staking/Staking.sol/Staking.json +1849 -0
  292. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  294. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +788 -0
  296. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  298. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1317 -0
  300. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  301. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +740 -0
  302. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  303. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  304. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  305. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  306. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  307. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  308. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  310. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  312. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  314. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  316. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  318. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  320. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  321. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  322. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  324. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  325. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  326. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  328. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  330. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  332. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  334. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  336. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  338. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  342. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  344. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  346. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  348. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  350. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  352. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  354. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  356. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  358. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  360. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  362. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  363. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  364. package/contracts/accounting/AccountingService.sol +261 -0
  365. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  366. package/contracts/accounting/IAccountingService.sol +45 -0
  367. package/contracts/authorization/AccessAdmin.sol +704 -0
  368. package/contracts/authorization/AccessAdminLib.sol +183 -0
  369. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  370. package/contracts/authorization/Authorization.sol +365 -0
  371. package/contracts/authorization/IAccess.sol +49 -0
  372. package/contracts/authorization/IAccessAdmin.sol +170 -0
  373. package/contracts/authorization/IAuthorization.sol +80 -0
  374. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  375. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  376. package/contracts/distribution/BasicDistribution.sol +141 -0
  377. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  378. package/contracts/distribution/Distribution.sol +289 -0
  379. package/contracts/distribution/DistributionService.sol +362 -0
  380. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  381. package/contracts/distribution/IDistributionComponent.sol +52 -0
  382. package/contracts/distribution/IDistributionService.sol +101 -0
  383. package/contracts/examples/fire/DamageLevel.sol +59 -0
  384. package/contracts/examples/fire/FirePool.sol +90 -0
  385. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  386. package/contracts/examples/fire/FireProduct.sol +437 -0
  387. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  388. package/contracts/examples/fire/FireUSD.sol +26 -0
  389. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  390. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  391. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  392. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  393. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  394. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  395. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  396. package/contracts/instance/BundleSet.sol +130 -0
  397. package/contracts/instance/IInstance.sol +98 -15
  398. package/contracts/instance/IInstanceService.sol +83 -0
  399. package/contracts/instance/Instance.sol +271 -45
  400. package/contracts/instance/InstanceAdmin.sol +450 -0
  401. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  402. package/contracts/instance/InstanceReader.sol +637 -0
  403. package/contracts/instance/InstanceService.sol +450 -0
  404. package/contracts/instance/InstanceServiceManager.sol +39 -0
  405. package/contracts/instance/InstanceStore.sol +298 -0
  406. package/contracts/instance/RiskSet.sol +118 -0
  407. package/contracts/instance/base/BalanceStore.sol +123 -0
  408. package/contracts/instance/base/Cloneable.sol +28 -0
  409. package/contracts/instance/base/ObjectCounter.sol +20 -0
  410. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  411. package/contracts/instance/base/ObjectSet.sol +77 -0
  412. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  413. package/contracts/instance/module/IBundle.sol +20 -0
  414. package/contracts/instance/module/IComponents.sol +51 -0
  415. package/contracts/instance/module/IDistribution.sol +42 -0
  416. package/contracts/instance/module/IPolicy.sol +85 -0
  417. package/contracts/instance/module/IRisk.sol +14 -0
  418. package/contracts/mock/Dip.sol +26 -0
  419. package/contracts/oracle/BasicOracle.sol +47 -0
  420. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  421. package/contracts/oracle/IOracle.sol +36 -0
  422. package/contracts/oracle/IOracleComponent.sol +33 -0
  423. package/contracts/oracle/IOracleService.sol +66 -0
  424. package/contracts/oracle/Oracle.sol +156 -0
  425. package/contracts/oracle/OracleService.sol +310 -0
  426. package/contracts/oracle/OracleServiceManager.sol +39 -0
  427. package/contracts/pool/BasicPool.sol +175 -0
  428. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  429. package/contracts/pool/BundleService.sol +395 -0
  430. package/contracts/pool/BundleServiceManager.sol +39 -0
  431. package/contracts/pool/IBundleService.sol +115 -0
  432. package/contracts/pool/IPoolComponent.sol +62 -0
  433. package/contracts/pool/IPoolService.sol +165 -0
  434. package/contracts/pool/Pool.sol +345 -0
  435. package/contracts/pool/PoolLib.sol +216 -0
  436. package/contracts/pool/PoolService.sol +760 -0
  437. package/contracts/pool/PoolServiceManager.sol +39 -0
  438. package/contracts/product/ApplicationService.sol +263 -0
  439. package/contracts/product/ApplicationServiceManager.sol +38 -0
  440. package/contracts/product/BasicProduct.sol +51 -0
  441. package/contracts/product/BasicProductAuthorization.sol +56 -0
  442. package/contracts/product/ClaimService.sol +640 -0
  443. package/contracts/product/ClaimServiceManager.sol +38 -0
  444. package/contracts/product/IApplicationService.sol +66 -0
  445. package/contracts/product/IClaimService.sol +135 -0
  446. package/contracts/product/IPolicyService.sol +95 -0
  447. package/contracts/product/IPricingService.sol +39 -0
  448. package/contracts/product/IProductComponent.sol +62 -0
  449. package/contracts/product/IRiskService.sol +30 -0
  450. package/contracts/product/PolicyService.sol +672 -0
  451. package/contracts/product/PolicyServiceLib.sol +65 -0
  452. package/contracts/product/PolicyServiceManager.sol +39 -0
  453. package/contracts/product/PricingService.sol +304 -0
  454. package/contracts/product/PricingServiceManager.sol +39 -0
  455. package/contracts/product/Product.sol +469 -0
  456. package/contracts/product/RiskService.sol +144 -0
  457. package/contracts/product/RiskServiceManager.sol +39 -0
  458. package/contracts/registry/ChainNft.sol +176 -100
  459. package/contracts/registry/IRegistry.sol +149 -51
  460. package/contracts/registry/IRegistryService.sol +62 -0
  461. package/contracts/registry/IRelease.sol +26 -0
  462. package/contracts/registry/ITransferInterceptor.sol +6 -0
  463. package/contracts/registry/Registry.sol +665 -111
  464. package/contracts/registry/RegistryAdmin.sol +258 -0
  465. package/contracts/registry/RegistryAuthorization.sol +266 -0
  466. package/contracts/registry/RegistryService.sol +241 -0
  467. package/contracts/registry/RegistryServiceManager.sol +53 -0
  468. package/contracts/registry/ReleaseAdmin.sol +253 -0
  469. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  470. package/contracts/registry/ReleaseRegistry.sol +517 -0
  471. package/contracts/registry/ServiceAuthorizationV3.sol +330 -0
  472. package/contracts/registry/TokenRegistry.sol +313 -0
  473. package/contracts/shared/Component.sol +227 -0
  474. package/contracts/shared/ComponentService.sol +696 -0
  475. package/contracts/shared/ComponentServiceManager.sol +38 -0
  476. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  477. package/contracts/shared/ContractLib.sol +281 -0
  478. package/contracts/shared/IComponent.sol +61 -0
  479. package/contracts/shared/IComponentService.sol +110 -0
  480. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  481. package/contracts/shared/IKeyValueStore.sol +54 -0
  482. package/contracts/shared/ILifecycle.sol +31 -0
  483. package/contracts/shared/INftOwnable.sol +25 -0
  484. package/contracts/shared/IPolicyHolder.sol +35 -0
  485. package/contracts/shared/IRegisterable.sol +37 -0
  486. package/contracts/shared/IRegistryLinked.sol +11 -0
  487. package/contracts/shared/IService.sol +23 -0
  488. package/contracts/shared/InitializableERC165.sol +35 -0
  489. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  490. package/contracts/shared/KeyValueStore.sol +131 -0
  491. package/contracts/shared/Lifecycle.sol +88 -0
  492. package/contracts/shared/NftIdSet.sol +65 -0
  493. package/contracts/shared/NftOwnable.sol +128 -0
  494. package/contracts/shared/PolicyHolder.sol +62 -0
  495. package/contracts/shared/Registerable.sol +106 -0
  496. package/contracts/shared/RegistryLinked.sol +38 -0
  497. package/contracts/shared/Service.sol +65 -0
  498. package/contracts/shared/TokenHandler.sol +342 -0
  499. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  500. package/contracts/staking/IStaking.sol +169 -0
  501. package/contracts/staking/IStakingService.sol +168 -0
  502. package/contracts/staking/StakeManagerLib.sol +224 -0
  503. package/contracts/staking/Staking.sol +526 -0
  504. package/contracts/staking/StakingLifecycle.sol +23 -0
  505. package/contracts/staking/StakingManager.sol +52 -0
  506. package/contracts/staking/StakingReader.sol +190 -0
  507. package/contracts/staking/StakingService.sol +433 -0
  508. package/contracts/staking/StakingServiceManager.sol +45 -0
  509. package/contracts/staking/StakingStore.sol +605 -0
  510. package/contracts/staking/TargetManagerLib.sol +211 -0
  511. package/contracts/type/AddressSet.sol +58 -0
  512. package/contracts/type/Amount.sol +150 -0
  513. package/contracts/type/Blocknumber.sol +142 -0
  514. package/contracts/type/ClaimId.sol +80 -0
  515. package/contracts/type/DistributorType.sol +55 -0
  516. package/contracts/type/Fee.sol +66 -0
  517. package/contracts/type/Key32.sol +50 -0
  518. package/contracts/type/Key32Set.sol +62 -0
  519. package/contracts/type/NftId.sol +85 -0
  520. package/contracts/type/NftIdSet.sol +62 -0
  521. package/contracts/type/ObjectType.sol +294 -0
  522. package/contracts/type/PayoutId.sol +82 -0
  523. package/contracts/type/Referral.sol +90 -0
  524. package/contracts/type/RequestId.sol +75 -0
  525. package/contracts/type/RiskId.sol +75 -0
  526. package/contracts/type/RoleId.sol +182 -0
  527. package/contracts/type/Seconds.sol +101 -0
  528. package/contracts/type/Selector.sol +107 -0
  529. package/contracts/type/StateId.sol +149 -0
  530. package/contracts/type/String.sol +53 -0
  531. package/contracts/type/Timestamp.sol +141 -0
  532. package/contracts/type/UFixed.sol +245 -0
  533. package/contracts/type/Version.sol +159 -0
  534. package/contracts/upgradeability/IVersionable.sol +53 -0
  535. package/contracts/upgradeability/ProxyManager.sol +232 -0
  536. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  537. package/contracts/upgradeability/Versionable.sol +59 -0
  538. package/package.json +26 -7
  539. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  540. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  541. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  542. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  543. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  544. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  545. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  546. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  547. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  548. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -195
  549. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  550. package/artifacts/contracts/components/Product.sol/Product.json +0 -213
  551. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  553. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  555. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  557. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  559. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  561. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  563. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  565. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  567. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  568. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  569. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  570. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  571. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  572. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  573. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  574. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  575. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  576. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  577. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  578. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  579. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  580. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  581. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  583. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  584. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  585. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  586. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  587. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  588. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  589. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  590. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  591. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  592. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  593. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  594. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  595. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  596. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  597. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  598. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  599. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  600. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  601. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  602. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  603. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  604. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  605. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  606. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  607. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  608. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  609. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  610. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  611. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  612. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  613. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  614. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  615. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  616. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  617. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  618. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  619. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  621. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -10
  623. package/contracts/components/Component.sol +0 -62
  624. package/contracts/components/IPool.sol +0 -9
  625. package/contracts/components/IProduct.sol +0 -11
  626. package/contracts/components/Pool.sol +0 -29
  627. package/contracts/components/Product.sol +0 -65
  628. package/contracts/experiment/inheritance/A.sol +0 -56
  629. package/contracts/experiment/inheritance/B.sol +0 -23
  630. package/contracts/experiment/inheritance/C.sol +0 -28
  631. package/contracts/experiment/inheritance/IA.sol +0 -18
  632. package/contracts/experiment/inheritance/IB.sol +0 -9
  633. package/contracts/experiment/inheritance/IC.sol +0 -11
  634. package/contracts/experiment/types/TypeA.sol +0 -42
  635. package/contracts/experiment/types/TypeB.sol +0 -24
  636. package/contracts/instance/access/Access.sol +0 -218
  637. package/contracts/instance/access/IAccess.sol +0 -83
  638. package/contracts/instance/component/ComponentModule.sol +0 -259
  639. package/contracts/instance/component/IComponent.sol +0 -94
  640. package/contracts/instance/policy/IPolicy.sol +0 -66
  641. package/contracts/instance/policy/PolicyModule.sol +0 -106
  642. package/contracts/instance/pool/IPoolModule.sol +0 -40
  643. package/contracts/instance/pool/PoolModule.sol +0 -83
  644. package/contracts/instance/product/IProductService.sol +0 -45
  645. package/contracts/instance/product/ProductService.sol +0 -105
  646. package/contracts/registry/IChainNft.sol +0 -18
  647. package/contracts/types/ChainId.sol +0 -24
  648. package/contracts/types/NftId.sol +0 -25
@@ -0,0 +1,640 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IClaimService} from "./IClaimService.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
6
+ import {IInstance} from "../instance/IInstance.sol";
7
+ import {IPolicy} from "../instance/module/IPolicy.sol";
8
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
9
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
10
+ import {IPolicyService} from "../product/IPolicyService.sol";
11
+ import {IPoolService} from "../pool/IPoolService.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
16
+ import {ContractLib} from "../shared/ContractLib.sol";
17
+ import {FeeLib} from "../type/Fee.sol";
18
+ import {InstanceReader} from "../instance/InstanceReader.sol";
19
+ import {InstanceStore} from "../instance/InstanceStore.sol";
20
+ import {NftId} from "../type/NftId.sol";
21
+ import {ObjectType, COMPONENT, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
22
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
23
+ import {Service} from "../shared/Service.sol";
24
+ import {StateId} from "../type/StateId.sol";
25
+ import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CANCELLED, CONFIRMED, CLOSED, EXPECTED, PAID} from "../type/StateId.sol";
26
+ import {TimestampLib} from "../type/Timestamp.sol";
27
+
28
+
29
+ contract ClaimService is
30
+ Service,
31
+ IClaimService
32
+ {
33
+
34
+ IPolicyService internal _policyService;
35
+ IPoolService internal _poolService;
36
+
37
+ function _initialize(
38
+ address owner,
39
+ bytes memory data
40
+ )
41
+ internal
42
+ virtual override
43
+ initializer()
44
+ {
45
+ (
46
+ address authority,
47
+ address registry
48
+ ) = abi.decode(data, (address, address));
49
+
50
+ __Service_init(authority, registry, owner);
51
+
52
+ _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
53
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
54
+
55
+ _registerInterface(type(IClaimService).interfaceId);
56
+ }
57
+
58
+ function submit(
59
+ NftId policyNftId,
60
+ Amount claimAmount,
61
+ bytes memory claimData // claim submission data
62
+ )
63
+ external
64
+ virtual
65
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
66
+ restricted()
67
+ returns (ClaimId claimId)
68
+ {
69
+ // checks
70
+ (
71
+ ,
72
+ IInstance instance,,
73
+ InstanceStore instanceStore,
74
+ IPolicy.PolicyInfo memory policyInfo
75
+ ) = _verifyCallerWithPolicy(policyNftId);
76
+
77
+ // check policy is in its active period
78
+ if(policyInfo.activatedAt.eqz() || TimestampLib.blockTimestamp() >= policyInfo.expiredAt) {
79
+ revert ErrorClaimServicePolicyNotOpen(policyNftId);
80
+ }
81
+
82
+ _checkClaimAmount(policyNftId, policyInfo, claimAmount);
83
+
84
+ // effects
85
+ // create new claim
86
+ claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
87
+ instanceStore.createClaim(
88
+ policyNftId,
89
+ claimId,
90
+ IPolicy.ClaimInfo({
91
+ claimAmount: claimAmount,
92
+ paidAmount: AmountLib.zero(),
93
+ payoutsCount: 0,
94
+ openPayoutsCount: 0,
95
+ submissionData: claimData,
96
+ processData: "",
97
+ closedAt: TimestampLib.zero()}));
98
+
99
+ // update and save policy info with instance
100
+ // policy claim amount is only updated when claim is confirmed
101
+ policyInfo.claimsCount += 1;
102
+ policyInfo.openClaimsCount += 1;
103
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
104
+
105
+ emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
106
+ }
107
+
108
+
109
+ function confirm(
110
+ NftId policyNftId,
111
+ ClaimId claimId,
112
+ Amount confirmedAmount,
113
+ bytes memory data // claim processing data
114
+ )
115
+ external
116
+ virtual
117
+ restricted()
118
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
119
+ {
120
+ // checks
121
+ _checkNftType(policyNftId, POLICY());
122
+
123
+ (
124
+ NftId productNftId,
125
+ IInstance instance,
126
+ InstanceReader instanceReader,
127
+ InstanceStore instanceStore,
128
+ IPolicy.PolicyInfo memory policyInfo
129
+ ) = _verifyCallerWithPolicy(policyNftId);
130
+
131
+ _checkClaimAmount(policyNftId, policyInfo, confirmedAmount);
132
+
133
+ // effects
134
+ // check/update claim info
135
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
136
+ claimInfo.claimAmount = confirmedAmount;
137
+ claimInfo.processData = data;
138
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
139
+
140
+ // update and save policy info with instance
141
+ policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
142
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
143
+
144
+ // should policy still be active it needs to become expired
145
+ if (policyInfo.claimAmount >= policyInfo.sumInsuredAmount) {
146
+ _policyService.expirePolicy(instance, policyNftId, TimestampLib.blockTimestamp());
147
+ }
148
+
149
+ emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
150
+
151
+ // interactions
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
+ restricted()
168
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
169
+ {
170
+ _checkNftType(policyNftId, POLICY());
171
+
172
+ (
173
+ ,
174
+ IInstance instance,
175
+ InstanceReader instanceReader,
176
+ InstanceStore instanceStore,
177
+ IPolicy.PolicyInfo memory policyInfo
178
+ ) = _verifyCallerWithPolicy(policyNftId);
179
+
180
+ // check/update claim info
181
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
182
+ claimInfo.processData = data;
183
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
184
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, DECLINED());
185
+
186
+ // update and save policy info with instance
187
+ policyInfo.openClaimsCount -= 1;
188
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
189
+
190
+ emit LogClaimServiceClaimDeclined(policyNftId, claimId);
191
+ }
192
+
193
+
194
+ function revoke(
195
+ NftId policyNftId,
196
+ ClaimId claimId
197
+ )
198
+ external
199
+ virtual
200
+ restricted()
201
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
202
+ {
203
+ (
204
+ ,
205
+ IInstance instance,
206
+ InstanceReader instanceReader,
207
+ InstanceStore instanceStore,
208
+ IPolicy.PolicyInfo memory policyInfo
209
+ ) = _verifyCallerWithPolicy(policyNftId);
210
+
211
+ // check/update claim info
212
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
213
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
214
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, REVOKED());
215
+
216
+ // update and save policy info with instance
217
+ policyInfo.openClaimsCount -= 1;
218
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
219
+
220
+ emit LogClaimServiceClaimRevoked(policyNftId, claimId);
221
+ }
222
+
223
+
224
+ function close(
225
+ NftId policyNftId,
226
+ ClaimId claimId
227
+ )
228
+ external
229
+ virtual
230
+ restricted()
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
+ restricted()
278
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
279
+ returns (PayoutId payoutId)
280
+ {
281
+ if (beneficiary == address(0)) {
282
+ revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
283
+ }
284
+
285
+ return _createPayout(
286
+ policyNftId,
287
+ claimId,
288
+ amount,
289
+ beneficiary,
290
+ data);
291
+ }
292
+
293
+
294
+ function createPayout(
295
+ NftId policyNftId,
296
+ ClaimId claimId,
297
+ Amount amount,
298
+ bytes memory data
299
+ )
300
+ external
301
+ virtual
302
+ restricted()
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
+ restricted()
324
+ // nonReentrant() // prevents creating a reinsurance payout in a single tx
325
+ {
326
+ // checks
327
+ (
328
+ NftId productNftId,,
329
+ // IInstance instance,
330
+ InstanceReader instanceReader,
331
+ InstanceStore instanceStore,
332
+ IPolicy.PolicyInfo memory policyInfo
333
+ ) = _verifyCallerWithPolicy(policyNftId);
334
+
335
+ // check that payout exists and is open
336
+ IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
337
+ StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
338
+ if(payoutState != EXPECTED()) {
339
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
340
+ }
341
+
342
+ // check that payout amount does not violate claim amount
343
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, payoutId.toClaimId());
344
+ if(claimInfo.paidAmount + payoutInfo.amount > claimInfo.claimAmount) {
345
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
346
+ policyNftId,
347
+ payoutId.toClaimId(),
348
+ claimInfo.claimAmount,
349
+ claimInfo.paidAmount + payoutInfo.amount);
350
+ }
351
+
352
+ // effects
353
+ // update and save payout info with instance
354
+ payoutInfo.paidAt = TimestampLib.blockTimestamp();
355
+ instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
356
+
357
+ // update and save claim info with instance
358
+ Amount payoutAmount = payoutInfo.amount;
359
+ {
360
+ ClaimId claimId = payoutId.toClaimId();
361
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
362
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
363
+ claimInfo.openPayoutsCount -= 1;
364
+
365
+ // check if this payout is closing the linked claim
366
+ // update claim and policy info accordingly
367
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
368
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
369
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, CLOSED());
370
+
371
+ policyInfo.openClaimsCount -= 1;
372
+ } else {
373
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
374
+ }
375
+ }
376
+
377
+ // update and save policy info with instance
378
+ policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
379
+ instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
380
+
381
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount);
382
+
383
+ // effects + interactions (push tokens to beneficiary, product)
384
+ // delegate to pool to update book keeping and moving tokens payout
385
+ _poolService.processPayout(
386
+ instanceReader,
387
+ instanceStore,
388
+ policyInfo.productNftId, // product nft id
389
+ policyNftId,
390
+ policyInfo.bundleNftId,
391
+ payoutId,
392
+ payoutAmount,
393
+ payoutInfo.beneficiary);
394
+ }
395
+
396
+ function cancelPayout(
397
+ NftId policyNftId,
398
+ PayoutId payoutId
399
+ )
400
+ external
401
+ virtual
402
+ restricted()
403
+ {
404
+ // checks
405
+ (
406
+ ,
407
+ IInstance instance,
408
+ InstanceReader instanceReader,
409
+ InstanceStore instanceStore,
410
+ IPolicy.PolicyInfo memory policyInfo
411
+ ) = _verifyCallerWithPolicy(policyNftId);
412
+
413
+ StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
414
+ if (payoutState != EXPECTED()) {
415
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
416
+ }
417
+
418
+ // effects
419
+ // update and save payout info with instance
420
+ instanceStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
421
+
422
+ {
423
+ ClaimId claimId = payoutId.toClaimId();
424
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
425
+ claimInfo.openPayoutsCount -= 1;
426
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
427
+ }
428
+
429
+ emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
430
+ }
431
+
432
+ // internal functions
433
+
434
+ function _checkClaimAmount(
435
+ NftId policyNftId,
436
+ IPolicy.PolicyInfo memory policyInfo,
437
+ Amount claimAmount
438
+ )
439
+ internal
440
+ pure
441
+ {
442
+ // check claim amount > 0
443
+ if (claimAmount.eqz()) {
444
+ revert ErrorClaimServiceClaimAmountIsZero(policyNftId);
445
+ }
446
+
447
+ // check policy including this claim is still within sum insured
448
+ if(policyInfo.claimAmount + claimAmount > policyInfo.sumInsuredAmount) {
449
+ revert ErrorClaimServiceClaimExceedsSumInsured(
450
+ policyNftId,
451
+ policyInfo.sumInsuredAmount,
452
+ policyInfo.payoutAmount + claimAmount);
453
+ }
454
+ }
455
+
456
+ function _createPayout(
457
+ NftId policyNftId,
458
+ ClaimId claimId,
459
+ Amount amount,
460
+ address beneficiary,
461
+ bytes memory data
462
+ )
463
+ internal
464
+ virtual
465
+ returns (PayoutId payoutId)
466
+ {
467
+ // checks
468
+ (
469
+ ,,
470
+ InstanceReader instanceReader,
471
+ InstanceStore instanceStore,
472
+ // IPolicy.PolicyInfo memory policyInfo
473
+ ) = _verifyCallerWithPolicy(policyNftId);
474
+
475
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
476
+
477
+ {
478
+ // check claim state
479
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
480
+ if (claimState != CONFIRMED()) {
481
+ revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
482
+ }
483
+
484
+ // check total payout amount remains within claim limit
485
+ Amount newPaidAmount = claimInfo.paidAmount + amount;
486
+ if (newPaidAmount > claimInfo.claimAmount) {
487
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
488
+ policyNftId, claimId, claimInfo.claimAmount, newPaidAmount);
489
+ }
490
+ }
491
+
492
+ // effects
493
+ // create payout info with instance
494
+ uint24 payoutNo = claimInfo.payoutsCount + 1;
495
+ payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
496
+ if (beneficiary == address(0)) {
497
+ beneficiary = getRegistry().ownerOf(policyNftId);
498
+ }
499
+
500
+ instanceStore.createPayout(
501
+ policyNftId,
502
+ payoutId,
503
+ IPolicy.PayoutInfo({
504
+ claimId: payoutId.toClaimId(),
505
+ amount: amount,
506
+ beneficiary: beneficiary,
507
+ data: data,
508
+ paidAt: TimestampLib.zero()}));
509
+
510
+ // update and save claim info with instance
511
+ claimInfo.payoutsCount += 1;
512
+ claimInfo.openPayoutsCount += 1;
513
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
514
+
515
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
516
+ }
517
+
518
+
519
+ function _verifyCallerWithPolicy(
520
+ NftId policyNftId
521
+ )
522
+ internal
523
+ view
524
+ virtual
525
+ returns (
526
+ NftId productNftId,
527
+ IInstance instance,
528
+ InstanceReader instanceReader,
529
+ InstanceStore instanceStore,
530
+ IPolicy.PolicyInfo memory policyInfo
531
+ )
532
+ {
533
+ (productNftId, instance) = _getAndVerifyActiveComponent(PRODUCT());
534
+ instanceReader = instance.getInstanceReader();
535
+ instanceStore = instance.getInstanceStore();
536
+
537
+ // check caller(product) policy match
538
+ policyInfo = instanceReader.getPolicyInfo(policyNftId);
539
+ if(policyInfo.productNftId != productNftId) {
540
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
541
+ policyInfo.productNftId,
542
+ productNftId);
543
+ }
544
+ }
545
+
546
+
547
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
548
+ internal
549
+ view
550
+ returns (
551
+ NftId productNftId,
552
+ IInstance instance
553
+ )
554
+ {
555
+ (
556
+ IRegistry.ObjectInfo memory info,
557
+ address instanceAddress
558
+ ) = ContractLib.getAndVerifyComponent(
559
+ getRegistry(),
560
+ msg.sender, // caller
561
+ PRODUCT(),
562
+ true); // isActive
563
+
564
+ // get component nft id and instance
565
+ productNftId = info.nftId;
566
+ instance = IInstance(instanceAddress);
567
+ }
568
+
569
+ function _verifyClaim(
570
+ InstanceReader instanceReader,
571
+ NftId policyNftId,
572
+ ClaimId claimId,
573
+ StateId expectedState
574
+ )
575
+ internal
576
+ view
577
+ returns (
578
+ IPolicy.ClaimInfo memory claimInfo
579
+ )
580
+ {
581
+ // check claim is created state
582
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
583
+ if(claimState != expectedState) {
584
+ revert ErrorClaimServiceClaimNotInExpectedState(
585
+ policyNftId, claimId, expectedState, claimState);
586
+ }
587
+
588
+ // get claim info
589
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
590
+ }
591
+
592
+ function _processConfirmedClaimByPool(
593
+ InstanceReader instanceReader,
594
+ NftId productNftId,
595
+ NftId policyNftId,
596
+ ClaimId claimId,
597
+ Amount amount
598
+ )
599
+ internal
600
+ {
601
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
602
+ if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
603
+ address poolAddress = getRegistry().getObjectAddress(poolNftId);
604
+ IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
605
+ }
606
+ }
607
+
608
+
609
+ function _policyHolderClaimConfirmed(
610
+ NftId policyNftId,
611
+ ClaimId claimId,
612
+ Amount confirmedAmount
613
+ )
614
+ internal
615
+ {
616
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
617
+ if(address(policyHolder) != address(0)) {
618
+ policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
619
+ }
620
+ }
621
+
622
+ // TODO: move to policy helper lib or something
623
+ function _getPolicyHolder(NftId policyNftId)
624
+ internal
625
+ view
626
+ returns (IPolicyHolder policyHolder)
627
+ {
628
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
629
+ policyHolder = IPolicyHolder(policyHolderAddress);
630
+
631
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
632
+ policyHolder = IPolicyHolder(address(0));
633
+ }
634
+ }
635
+
636
+
637
+ function _getDomain() internal pure override returns(ObjectType) {
638
+ return CLAIM();
639
+ }
640
+ }
@@ -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(authority, registry);
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
+ }