@etherisc/gif-next 0.0.2-e20063b-144 → 0.0.2-e25d641-064

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