@etherisc/gif-next 0.0.2-ff282a4-523 → 0.0.2-ff795d8-141

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