@etherisc/gif-next 0.0.2-a4051e9-983 → 0.0.2-a49c197-934

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 (440) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -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 +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +103 -55
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +37 -5
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +166 -104
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +81 -51
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +102 -165
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -295
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +137 -129
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  67. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -56
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +240 -93
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  85. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  92. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  98. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  103. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  115. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  123. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
  128. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  129. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  130. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
  132. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
  134. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  136. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  138. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  139. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  140. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  142. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  143. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
  144. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
  146. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  147. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  148. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
  150. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  154. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  155. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  156. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  158. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  159. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  163. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  166. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  167. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  168. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  169. package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
  170. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
  172. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  174. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +31 -2
  176. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  178. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  179. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  180. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  181. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/Registry.sol/Registry.json +69 -40
  183. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  184. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
  185. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  187. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  189. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  190. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  191. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  193. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +310 -52
  195. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  197. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  198. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +3 -3
  199. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  200. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  201. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
  203. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
  205. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  207. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  209. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  210. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  211. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  215. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  217. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
  219. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  221. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  223. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  227. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  230. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  231. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  232. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  233. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  236. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  237. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  239. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  240. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  241. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  243. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  244. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  245. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  246. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  247. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  248. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  251. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  252. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  253. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  254. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  255. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  256. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
  257. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  258. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  259. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  260. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  261. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  262. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  263. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  265. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  267. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
  269. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
  271. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  273. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  274. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  275. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  276. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  278. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  281. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  283. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  285. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  287. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  288. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  289. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  291. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  292. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  293. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  295. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  297. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  299. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  301. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  303. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
  305. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  312. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  314. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  316. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  318. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  319. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  320. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  321. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  322. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  323. package/contracts/accounting/AccountingService.sol +262 -0
  324. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  325. package/contracts/accounting/IAccountingService.sol +45 -0
  326. package/contracts/authorization/AccessAdmin.sol +136 -73
  327. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  328. package/contracts/authorization/IAccessAdmin.sol +6 -3
  329. package/contracts/distribution/BasicDistribution.sol +6 -6
  330. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  331. package/contracts/distribution/Distribution.sol +32 -30
  332. package/contracts/distribution/DistributionService.sol +35 -33
  333. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  334. package/contracts/distribution/IDistributionService.sol +5 -6
  335. package/contracts/examples/fire/FirePool.sol +25 -10
  336. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  337. package/contracts/examples/fire/FireProduct.sol +31 -11
  338. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  339. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  340. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  341. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  342. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  343. package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
  344. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  345. package/contracts/instance/BundleSet.sol +38 -34
  346. package/contracts/instance/IInstance.sol +8 -8
  347. package/contracts/instance/IInstanceService.sol +9 -9
  348. package/contracts/instance/Instance.sol +20 -17
  349. package/contracts/instance/InstanceAdmin.sol +98 -49
  350. package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
  351. package/contracts/instance/InstanceReader.sol +108 -7
  352. package/contracts/instance/InstanceService.sol +73 -80
  353. package/contracts/instance/InstanceServiceManager.sol +1 -1
  354. package/contracts/instance/InstanceStore.sol +13 -2
  355. package/contracts/instance/RiskSet.sol +117 -0
  356. package/contracts/instance/base/ObjectCounter.sol +1 -2
  357. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  358. package/contracts/instance/base/ObjectSet.sol +24 -25
  359. package/contracts/instance/module/IComponents.sol +4 -4
  360. package/contracts/instance/module/IPolicy.sol +2 -1
  361. package/contracts/instance/module/IRisk.sol +3 -0
  362. package/contracts/oracle/Oracle.sol +1 -1
  363. package/contracts/oracle/OracleService.sol +90 -72
  364. package/contracts/oracle/OracleServiceManager.sol +1 -1
  365. package/contracts/pool/BasicPool.sol +24 -3
  366. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  367. package/contracts/pool/BundleService.sol +49 -104
  368. package/contracts/pool/BundleServiceManager.sol +1 -1
  369. package/contracts/pool/IBundleService.sol +2 -24
  370. package/contracts/pool/IPoolComponent.sol +1 -7
  371. package/contracts/pool/IPoolService.sol +12 -26
  372. package/contracts/pool/Pool.sol +112 -102
  373. package/contracts/pool/PoolService.sol +171 -100
  374. package/contracts/pool/PoolServiceManager.sol +1 -1
  375. package/contracts/product/ApplicationService.sol +23 -21
  376. package/contracts/product/ApplicationServiceManager.sol +1 -1
  377. package/contracts/product/BasicProduct.sol +9 -11
  378. package/contracts/product/BasicProductAuthorization.sol +1 -2
  379. package/contracts/product/ClaimService.sol +155 -51
  380. package/contracts/product/ClaimServiceManager.sol +1 -1
  381. package/contracts/product/IApplicationService.sol +5 -2
  382. package/contracts/product/IClaimService.sol +13 -0
  383. package/contracts/product/IPolicyService.sol +17 -7
  384. package/contracts/product/IProductComponent.sol +4 -1
  385. package/contracts/product/PolicyService.sol +248 -195
  386. package/contracts/product/PolicyServiceManager.sol +1 -1
  387. package/contracts/product/PricingService.sol +27 -20
  388. package/contracts/product/PricingServiceManager.sol +3 -3
  389. package/contracts/product/Product.sol +47 -39
  390. package/contracts/product/RiskService.sol +78 -23
  391. package/contracts/product/RiskServiceManager.sol +1 -1
  392. package/contracts/registry/ChainNft.sol +4 -2
  393. package/contracts/registry/IRegistry.sol +8 -15
  394. package/contracts/registry/IRelease.sol +26 -0
  395. package/contracts/registry/Registry.sol +12 -3
  396. package/contracts/registry/RegistryAdmin.sol +121 -225
  397. package/contracts/registry/RegistryService.sol +3 -3
  398. package/contracts/registry/RegistryServiceManager.sol +1 -1
  399. package/contracts/registry/ReleaseAdmin.sol +245 -0
  400. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  401. package/contracts/registry/ReleaseRegistry.sol +129 -119
  402. package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
  403. package/contracts/registry/TokenRegistry.sol +5 -7
  404. package/contracts/shared/Component.sol +59 -98
  405. package/contracts/shared/ComponentService.sol +206 -241
  406. package/contracts/shared/ComponentServiceManager.sol +1 -1
  407. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  408. package/contracts/shared/ContractLib.sol +223 -9
  409. package/contracts/shared/IComponent.sol +4 -17
  410. package/contracts/shared/IComponentService.sol +20 -24
  411. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  412. package/contracts/shared/IRegisterable.sol +15 -4
  413. package/contracts/shared/IService.sol +3 -5
  414. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  415. package/contracts/shared/NftOwnable.sol +4 -4
  416. package/contracts/shared/PolicyHolder.sol +1 -1
  417. package/contracts/shared/Registerable.sol +44 -20
  418. package/contracts/shared/RegistryLinked.sol +7 -13
  419. package/contracts/shared/Service.sol +8 -27
  420. package/contracts/shared/TokenHandler.sol +316 -66
  421. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  422. package/contracts/staking/IStaking.sol +9 -4
  423. package/contracts/staking/Staking.sol +62 -33
  424. package/contracts/staking/StakingService.sol +55 -9
  425. package/contracts/type/Key32.sol +2 -2
  426. package/contracts/type/Key32Set.sol +62 -0
  427. package/contracts/type/NftId.sol +6 -0
  428. package/contracts/type/ObjectType.sol +32 -18
  429. package/contracts/type/RiskId.sol +23 -6
  430. package/contracts/type/RoleId.sol +5 -2
  431. package/contracts/type/Timestamp.sol +0 -5
  432. package/contracts/type/UFixed.sol +9 -119
  433. package/contracts/type/Version.sol +15 -5
  434. package/contracts/upgradeability/ProxyManager.sol +1 -1
  435. package/package.json +3 -3
  436. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  437. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  438. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  439. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  440. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
@@ -6,8 +6,7 @@ import {BasicProduct} from "./BasicProduct.sol";
6
6
  import {PRODUCT} from "../type/ObjectType.sol";
7
7
  import {IAccess} from "../authorization/IAccess.sol";
8
8
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
9
- import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
10
- import {RoleId} from "../type/RoleId.sol";
9
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
11
10
 
12
11
 
13
12
  contract BasicProductAuthorization
@@ -1,19 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {TimestampLib} from "../type/Timestamp.sol";
6
- import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
7
- import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
8
- import {NftId} from "../type/NftId.sol";
9
- import {FeeLib} from "../type/Fee.sol";
10
- import {StateId} from "../type/StateId.sol";
11
- import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
12
- import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
13
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
14
- import {ContractLib} from "../shared/ContractLib.sol";
15
- import {InstanceReader} from "../instance/InstanceReader.sol";
16
- import {InstanceStore} from "../instance/InstanceStore.sol";
17
4
  import {IClaimService} from "./IClaimService.sol";
18
5
  import {IComponents} from "../instance/module/IComponents.sol";
19
6
  import {IInstance} from "../instance/IInstance.sol";
@@ -22,10 +9,25 @@ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
22
9
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
23
10
  import {IPolicyService} from "../product/IPolicyService.sol";
24
11
  import {IPoolService} from "../pool/IPoolService.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
16
+ import {ContractLib} from "../shared/ContractLib.sol";
17
+ import {FeeLib} from "../type/Fee.sol";
18
+ import {InstanceReader} from "../instance/InstanceReader.sol";
19
+ import {InstanceStore} from "../instance/InstanceStore.sol";
20
+ import {NftId} from "../type/NftId.sol";
21
+ import {ObjectType, COMPONENT, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
22
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
23
+ import {Service} from "../shared/Service.sol";
24
+ import {StateId} from "../type/StateId.sol";
25
+ import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CANCELLED, CONFIRMED, CLOSED, EXPECTED, PAID} from "../type/StateId.sol";
26
+ import {TimestampLib} from "../type/Timestamp.sol";
25
27
 
26
28
 
27
29
  contract ClaimService is
28
- ComponentVerifyingService,
30
+ Service,
29
31
  IClaimService
30
32
  {
31
33
 
@@ -41,11 +43,11 @@ contract ClaimService is
41
43
  initializer()
42
44
  {
43
45
  (
44
- address registryAddress,
45
- address authority
46
+ address authority,
47
+ address registry
46
48
  ) = abi.decode(data, (address, address));
47
49
 
48
- _initializeService(registryAddress, authority, owner);
50
+ __Service_init(authority, registry, owner);
49
51
 
50
52
  _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
51
53
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
@@ -60,10 +62,11 @@ contract ClaimService is
60
62
  )
61
63
  external
62
64
  virtual
63
- onlyNftOfType(policyNftId, POLICY())
64
65
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
66
+ restricted()
65
67
  returns (ClaimId claimId)
66
68
  {
69
+ // checks
67
70
  (
68
71
  ,
69
72
  IInstance instance,,
@@ -76,15 +79,9 @@ contract ClaimService is
76
79
  revert ErrorClaimServicePolicyNotOpen(policyNftId);
77
80
  }
78
81
 
79
- // TODO check claim amount > 0
80
- // check policy including this claim is still within sum insured
81
- if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
82
- revert ErrorClaimServiceClaimExceedsSumInsured(
83
- policyNftId,
84
- policyInfo.sumInsuredAmount,
85
- AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
86
- }
82
+ _checkClaimAmount(policyNftId, policyInfo, claimAmount);
87
83
 
84
+ // effects
88
85
  // create new claim
89
86
  claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
90
87
  instanceStore.createClaim(
@@ -117,9 +114,11 @@ contract ClaimService is
117
114
  )
118
115
  external
119
116
  virtual
120
- onlyNftOfType(policyNftId, POLICY())
121
117
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
122
118
  {
119
+ // checks
120
+ _checkNftType(policyNftId, POLICY());
121
+
123
122
  (
124
123
  NftId productNftId,
125
124
  IInstance instance,
@@ -128,8 +127,9 @@ contract ClaimService is
128
127
  IPolicy.PolicyInfo memory policyInfo
129
128
  ) = _verifyCallerWithPolicy(policyNftId);
130
129
 
131
- // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
130
+ _checkClaimAmount(policyNftId, policyInfo, confirmedAmount);
132
131
 
132
+ // effects
133
133
  // check/update claim info
134
134
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
135
135
  claimInfo.claimAmount = confirmedAmount;
@@ -147,6 +147,7 @@ contract ClaimService is
147
147
 
148
148
  emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
149
149
 
150
+ // interactions
150
151
  // callback to pool if applicable
151
152
  _processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
152
153
 
@@ -162,9 +163,10 @@ contract ClaimService is
162
163
  )
163
164
  external
164
165
  virtual
165
- onlyNftOfType(policyNftId, POLICY())
166
166
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
167
167
  {
168
+ _checkNftType(policyNftId, POLICY());
169
+
168
170
  (
169
171
  ,
170
172
  IInstance instance,
@@ -187,16 +189,14 @@ contract ClaimService is
187
189
  }
188
190
 
189
191
 
190
- // TODO add test case
191
192
  function revoke(
192
193
  NftId policyNftId,
193
194
  ClaimId claimId
194
195
  )
195
196
  external
196
197
  virtual
197
- onlyNftOfType(policyNftId, POLICY())
198
198
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
199
- {
199
+ {
200
200
  (
201
201
  ,
202
202
  IInstance instance,
@@ -224,9 +224,10 @@ contract ClaimService is
224
224
  )
225
225
  external
226
226
  virtual
227
- onlyNftOfType(policyNftId, POLICY())
228
227
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
229
228
  {
229
+ _checkNftType(policyNftId, POLICY());
230
+
230
231
  (
231
232
  ,
232
233
  IInstance instance,
@@ -269,7 +270,6 @@ contract ClaimService is
269
270
  )
270
271
  external
271
272
  virtual
272
- onlyNftOfType(policyNftId, POLICY())
273
273
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
274
274
  returns (PayoutId payoutId)
275
275
  {
@@ -294,10 +294,11 @@ contract ClaimService is
294
294
  )
295
295
  external
296
296
  virtual
297
- onlyNftOfType(policyNftId, POLICY())
298
297
  // nonReentrant() // prevents creating a reinsurance payout in a single tx
299
298
  returns (PayoutId payoutId)
300
299
  {
300
+ _checkNftType(policyNftId, POLICY());
301
+
301
302
  return _createPayout(
302
303
  policyNftId,
303
304
  claimId,
@@ -313,9 +314,9 @@ contract ClaimService is
313
314
  )
314
315
  external
315
316
  virtual
316
- onlyNftOfType(policyNftId, POLICY())
317
317
  // nonReentrant() // prevents creating a reinsurance payout in a single tx
318
318
  {
319
+ // checks
319
320
  (
320
321
  ,
321
322
  IInstance instance,
@@ -324,9 +325,24 @@ contract ClaimService is
324
325
  IPolicy.PolicyInfo memory policyInfo
325
326
  ) = _verifyCallerWithPolicy(policyNftId);
326
327
 
327
- // TODO add check that payout exists and is open
328
+ // check that payout exists and is open
328
329
  IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
330
+ StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
331
+ if(payoutState != EXPECTED()) {
332
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
333
+ }
334
+
335
+ // check that payout amount does not violate claim amount
336
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, payoutId.toClaimId());
337
+ if(claimInfo.paidAmount + payoutInfo.amount > claimInfo.claimAmount) {
338
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
339
+ policyNftId,
340
+ payoutId.toClaimId(),
341
+ claimInfo.claimAmount,
342
+ claimInfo.paidAmount + payoutInfo.amount);
343
+ }
329
344
 
345
+ // effects
330
346
  // update and save payout info with instance
331
347
  payoutInfo.paidAt = TimestampLib.blockTimestamp();
332
348
  instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
@@ -352,7 +368,7 @@ contract ClaimService is
352
368
  }
353
369
 
354
370
  // update and save policy info with instance
355
- policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
371
+ policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
356
372
  instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
357
373
 
358
374
  // inform pool about payout
@@ -380,7 +396,9 @@ contract ClaimService is
380
396
  {
381
397
  NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
382
398
  IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
383
- poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
399
+ poolInfo.tokenHandler.pushToken(
400
+ beneficiary,
401
+ netPayoutAmount);
384
402
 
385
403
  // TODO add 2nd token tx if processingFeeAmount > 0
386
404
  }
@@ -390,8 +408,64 @@ contract ClaimService is
390
408
  }
391
409
  }
392
410
 
411
+ function cancelPayout(
412
+ NftId policyNftId,
413
+ PayoutId payoutId
414
+ )
415
+ external
416
+ virtual
417
+ {
418
+ // checks
419
+ (
420
+ ,
421
+ IInstance instance,
422
+ InstanceReader instanceReader,
423
+ InstanceStore instanceStore,
424
+ IPolicy.PolicyInfo memory policyInfo
425
+ ) = _verifyCallerWithPolicy(policyNftId);
426
+
427
+ StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
428
+ if (payoutState != EXPECTED()) {
429
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
430
+ }
431
+
432
+ // effects
433
+ // update and save payout info with instance
434
+ instanceStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
435
+
436
+ {
437
+ ClaimId claimId = payoutId.toClaimId();
438
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
439
+ claimInfo.openPayoutsCount -= 1;
440
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
441
+ }
442
+
443
+ emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
444
+ }
445
+
393
446
  // internal functions
394
447
 
448
+ function _checkClaimAmount(
449
+ NftId policyNftId,
450
+ IPolicy.PolicyInfo memory policyInfo,
451
+ Amount claimAmount
452
+ )
453
+ internal
454
+ pure
455
+ {
456
+ // check claim amount > 0
457
+ if (claimAmount.eqz()) {
458
+ revert ErrorClaimServiceClaimAmountIsZero(policyNftId);
459
+ }
460
+
461
+ // check policy including this claim is still within sum insured
462
+ if(policyInfo.claimAmount + claimAmount > policyInfo.sumInsuredAmount) {
463
+ revert ErrorClaimServiceClaimExceedsSumInsured(
464
+ policyNftId,
465
+ policyInfo.sumInsuredAmount,
466
+ policyInfo.payoutAmount + claimAmount);
467
+ }
468
+ }
395
469
 
396
470
  function _createPayout(
397
471
  NftId policyNftId,
@@ -404,6 +478,7 @@ contract ClaimService is
404
478
  virtual
405
479
  returns (PayoutId payoutId)
406
480
  {
481
+ // checks
407
482
  (
408
483
  ,
409
484
  ,
@@ -413,13 +488,23 @@ contract ClaimService is
413
488
  ) = _verifyCallerWithPolicy(policyNftId);
414
489
 
415
490
  IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
416
- StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
417
491
 
418
- // TODO add checks
419
- // claim needs to be open
420
- // claim.paidAmount + amount <= claim.claimAmount
492
+ {
493
+ // check claim state
494
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
495
+ if (claimState != CONFIRMED()) {
496
+ revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
497
+ }
498
+
499
+ // check total payout amount remains within claim limit
500
+ Amount newPaidAmount = claimInfo.paidAmount + amount;
501
+ if (newPaidAmount > claimInfo.claimAmount) {
502
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
503
+ policyNftId, claimId, claimInfo.claimAmount, newPaidAmount);
504
+ }
505
+ }
421
506
 
422
- // check/update claim info
507
+ // effects
423
508
  // create payout info with instance
424
509
  uint24 payoutNo = claimInfo.payoutsCount + 1;
425
510
  payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
@@ -442,10 +527,6 @@ contract ClaimService is
442
527
  claimInfo.openPayoutsCount += 1;
443
528
  instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
444
529
 
445
- // update and save policy info with instance
446
- policyInfo.payoutAmount.add(amount);
447
- instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
448
-
449
530
  emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
450
531
  }
451
532
 
@@ -457,6 +538,7 @@ contract ClaimService is
457
538
  IPolicy.PayoutInfo memory payoutInfo
458
539
  )
459
540
  internal
541
+ view
460
542
  returns (
461
543
  Amount netPayoutAmount,
462
544
  Amount processingFeeAmount,
@@ -480,8 +562,8 @@ contract ClaimService is
480
562
  beneficiary = payoutInfo.beneficiary;
481
563
  }
482
564
 
483
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
484
- if(FeeLib.gtz(productInfo.processingFee)) {
565
+ IComponents.FeeInfo memory feeInfo = instanceReader.getFeeInfo(productNftId);
566
+ if(FeeLib.gtz(feeInfo.processingFee)) {
485
567
  // TODO calculate and set net payout and processing fees
486
568
  }
487
569
  }
@@ -502,7 +584,7 @@ contract ClaimService is
502
584
  IPolicy.PolicyInfo memory policyInfo
503
585
  )
504
586
  {
505
- (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
587
+ (productNftId, instance) = _getAndVerifyActiveComponent(PRODUCT());
506
588
  instanceReader = instance.getInstanceReader();
507
589
  instanceStore = instance.getInstanceStore();
508
590
 
@@ -515,6 +597,28 @@ contract ClaimService is
515
597
  }
516
598
  }
517
599
 
600
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
601
+ internal
602
+ view
603
+ returns (
604
+ NftId productNftId,
605
+ IInstance instance
606
+ )
607
+ {
608
+ (
609
+ IRegistry.ObjectInfo memory info,
610
+ address instanceAddress
611
+ ) = ContractLib.getAndVerifyComponent(
612
+ getRegistry(),
613
+ msg.sender, // caller
614
+ PRODUCT(),
615
+ true); // isActive
616
+
617
+ // get component nft id and instance
618
+ productNftId = info.nftId;
619
+ instance = IInstance(instanceAddress);
620
+ }
621
+
518
622
  function _verifyClaim(
519
623
  InstanceReader instanceReader,
520
624
  NftId policyNftId,
@@ -17,7 +17,7 @@ contract ClaimServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  ClaimService svc = new ClaimService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -15,8 +15,11 @@ import {Seconds} from "../type/Seconds.sol";
15
15
  /// only product components may call transaction functions
16
16
  interface IApplicationService is IService {
17
17
 
18
- error ErrorApplicationServiceNotProduct(NftId callerNftId, ObjectType callerType);
19
- error ErrorApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
+ // _checkLinkedApplicationParameters
19
+ error ErrorApplicationServiceRiskUnknown(RiskId riskId, NftId productNftId);
20
+ error ErrorApplicationServiceRiskPaused(RiskId riskId, NftId productNftId);
21
+ error ErrorApplicationServiceBundleUnknown(NftId bundleNftId, NftId poolNftId);
22
+ error ErrorApplicationServiceBundleLocked(NftId bundleNftId, NftId poolNftId);
20
23
 
21
24
  /// @dev creates a new application based on the specified attributes
22
25
  /// may only be called by a product component
@@ -28,10 +28,13 @@ interface IClaimService is
28
28
 
29
29
  event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary);
30
30
  event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
31
+ event LogClaimServicePayoutCancelled(NftId policyNftId, PayoutId payoutId);
32
+
31
33
  error ErrorClaimServiceBeneficiarySet(NftId policyNftId, PayoutId payoutId, address beneficiary);
32
34
 
33
35
  error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
34
36
  error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
37
+ error ErrorClaimServiceClaimAmountIsZero(NftId policyNftId);
35
38
  error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
36
39
  error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
37
40
  error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
@@ -40,6 +43,10 @@ interface IClaimService is
40
43
  error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
41
44
  error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
42
45
 
46
+ error ErrorClaimServiceClaimNotConfirmed(NftId policyNftId, ClaimId claimId, StateId actualState);
47
+ error ErrorClaimServicePayoutExceedsClaimAmount(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount totalPayoutAmount);
48
+ error ErrorClaimServicePayoutNotExpected(NftId policyNftId, PayoutId payoutId, StateId actualState);
49
+
43
50
  /// @dev create a new claim for the specified policy
44
51
  /// returns the id of the newly created claim
45
52
  /// function can only be called by product, policy needs to match with calling product
@@ -120,4 +127,10 @@ interface IClaimService is
120
127
  NftId policyNftId,
121
128
  PayoutId payoutId
122
129
  ) external;
130
+
131
+ /// @dev cancels the specified payout. no tokens are moved, payout is set to cancelled.
132
+ function cancelPayout(
133
+ NftId policyNftId,
134
+ PayoutId payoutId
135
+ ) external;
123
136
  }
@@ -5,6 +5,7 @@ import {IService} from "../shared/IService.sol";
5
5
 
6
6
  import {Amount} from "../type/Amount.sol";
7
7
  import {IInstance} from "../instance/IInstance.sol";
8
+ import {InstanceReader} from "../instance/InstanceReader.sol";
8
9
  import {NftId} from "../type/NftId.sol";
9
10
  import {StateId} from "../type/StateId.sol";
10
11
  import {Timestamp} from "../type/Timestamp.sol";
@@ -28,8 +29,9 @@ interface IPolicyService is IService {
28
29
 
29
30
  error ErrorPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
30
31
  error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId);
31
- error ErrorPolicyServicePolicyNotActivated(NftId policyNftId);
32
- error ErrorPolicyServicePolicyAlreadyClosed(NftId policyNftId);
32
+
33
+ error ErrorPolicyServicePolicyNotCloseable(NftId policyNftId);
34
+
33
35
  error ErrorPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
34
36
  error ErrorPolicyServicePremiumNotPaid(NftId policyNftId, Amount premiumAmount);
35
37
  error ErrorPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
@@ -49,7 +51,9 @@ interface IPolicyService is IService {
49
51
  function createPolicy(
50
52
  NftId applicationNftId,
51
53
  Timestamp activateAt
52
- ) external;
54
+ )
55
+ external
56
+ returns (Amount premiumAmount);
53
57
 
54
58
  /// @dev declines an application represented by {policyNftId}
55
59
  /// an application can only be declined in applied state
@@ -63,18 +67,24 @@ interface IPolicyService is IService {
63
67
  /// to activate a policy it needs to be in underwritten state
64
68
  function activate(NftId policyNftId, Timestamp activateAt) external;
65
69
 
66
- /// @dev expires the specified policy and sets the expiry date in the policy metadata. If expiry date is set to 0, then the earliest possible expiry date (current blocktime) is set
70
+ /// @dev Expires the specified policy and sets the expiry date in the policy metadata.
71
+ /// Function consumers are products.
72
+ /// If expiry date is set to 0, then the earliest possible expiry date (current blocktime) is set
67
73
  /// to expire a policy it must be in active state, policies may be expired even when the predefined expiry date is still in the future
68
74
  /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
69
75
  /// this function can only be called by a product. the policy needs to match with the calling product
70
76
  /// @return expiredAt the effective expiry date
71
77
  function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
72
78
 
73
- function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
74
-
75
- /// @dev closes the specified policy and sets the closed data in the policy metadata
79
+ /// @dev Closes the specified policy and sets the closed data in the policy metadata
76
80
  /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
77
81
  /// this function can only be called by a product. the policy needs to match with the calling product
78
82
  function close(NftId policyNftId) external;
79
83
 
84
+ /// @dev Expires the specified policy and sets the expiry date in the policy metadata.
85
+ /// Function consumers is claim service.
86
+ function expirePolicy(IInstance instance, NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
87
+
88
+ /// @dev Returns true iff policy is closeable
89
+ function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId) external view returns (bool isCloseable);
80
90
  }
@@ -53,7 +53,10 @@ interface IProductComponent is
53
53
  ) external view returns (Amount netPremiumAmount);
54
54
 
55
55
 
56
- /// @dev returns initial pool specific infos for this pool
56
+ /// @dev returns initial product specific infos
57
57
  function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
58
+
59
+ /// @dev returns initial fee infos
60
+ function getInitialFeeInfo() external view returns (IComponents.FeeInfo memory info);
58
61
 
59
62
  }