@etherisc/gif-next 0.0.2-e9c5694-914 → 0.0.2-ea09fbf-195

Sign up to get free protection for your applications and to get access to all the features.
Files changed (443) 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 +154 -108
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
  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 +101 -164
  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 -290
  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 +193 -45
  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 +239 -92
  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 +853 -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 +16 -5
  92. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.json +168 -0
  94. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  100. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  105. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
  162. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
  164. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  166. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  168. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  169. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  170. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
  172. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
  174. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  176. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +31 -2
  178. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  180. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  181. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  182. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  183. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/Registry.sol/Registry.json +69 -40
  185. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
  187. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  189. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  191. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  192. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +310 -52
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  211. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  217. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  219. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
  221. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  223. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  229. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  232. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  233. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  235. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  247. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  248. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  253. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  255. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  256. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  257. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  258. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
  259. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  261. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  263. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  265. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  267. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  269. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
  271. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
  273. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  275. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  276. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  277. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  278. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  280. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  283. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  285. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  287. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  289. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  290. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  291. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  293. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  295. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  297. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  299. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  301. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  303. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  305. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
  307. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  325. package/contracts/accounting/AccountingService.sol +262 -0
  326. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  327. package/contracts/accounting/IAccountingService.sol +45 -0
  328. package/contracts/authorization/AccessAdmin.sol +136 -73
  329. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  330. package/contracts/authorization/IAccessAdmin.sol +6 -3
  331. package/contracts/distribution/BasicDistribution.sol +6 -6
  332. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  333. package/contracts/distribution/Distribution.sol +32 -30
  334. package/contracts/distribution/DistributionService.sol +34 -32
  335. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  336. package/contracts/distribution/IDistributionService.sol +5 -6
  337. package/contracts/examples/fire/FirePool.sol +22 -5
  338. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  339. package/contracts/examples/fire/FireProduct.sol +31 -8
  340. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  341. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  342. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  343. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  344. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  345. package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
  346. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  347. package/contracts/instance/BundleSet.sol +42 -38
  348. package/contracts/instance/IInstance.sol +8 -8
  349. package/contracts/instance/IInstanceService.sol +9 -9
  350. package/contracts/instance/Instance.sol +20 -17
  351. package/contracts/instance/InstanceAdmin.sol +96 -47
  352. package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
  353. package/contracts/instance/InstanceReader.sol +108 -7
  354. package/contracts/instance/InstanceService.sol +73 -82
  355. package/contracts/instance/InstanceServiceManager.sol +1 -1
  356. package/contracts/instance/InstanceStore.sol +13 -2
  357. package/contracts/instance/RiskSet.sol +118 -0
  358. package/contracts/instance/base/ObjectCounter.sol +1 -2
  359. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  360. package/contracts/instance/base/ObjectSet.sol +31 -33
  361. package/contracts/instance/base/ObjectSetHelper.sol +30 -0
  362. package/contracts/instance/module/IComponents.sol +4 -4
  363. package/contracts/instance/module/IPolicy.sol +2 -1
  364. package/contracts/instance/module/IRisk.sol +3 -0
  365. package/contracts/oracle/Oracle.sol +1 -1
  366. package/contracts/oracle/OracleService.sol +92 -73
  367. package/contracts/oracle/OracleServiceManager.sol +1 -1
  368. package/contracts/pool/BasicPool.sol +24 -3
  369. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  370. package/contracts/pool/BundleService.sol +26 -94
  371. package/contracts/pool/BundleServiceManager.sol +1 -1
  372. package/contracts/pool/IBundleService.sol +2 -24
  373. package/contracts/pool/IPoolComponent.sol +1 -7
  374. package/contracts/pool/IPoolService.sol +12 -26
  375. package/contracts/pool/Pool.sol +112 -102
  376. package/contracts/pool/PoolService.sol +171 -100
  377. package/contracts/pool/PoolServiceManager.sol +1 -1
  378. package/contracts/product/ApplicationService.sol +15 -15
  379. package/contracts/product/ApplicationServiceManager.sol +1 -1
  380. package/contracts/product/BasicProduct.sol +9 -11
  381. package/contracts/product/BasicProductAuthorization.sol +1 -2
  382. package/contracts/product/ClaimService.sol +147 -51
  383. package/contracts/product/ClaimServiceManager.sol +1 -1
  384. package/contracts/product/IApplicationService.sol +5 -2
  385. package/contracts/product/IClaimService.sol +13 -0
  386. package/contracts/product/IPolicyService.sol +17 -7
  387. package/contracts/product/IProductComponent.sol +4 -1
  388. package/contracts/product/PolicyService.sol +244 -199
  389. package/contracts/product/PolicyServiceManager.sol +1 -1
  390. package/contracts/product/PricingService.sol +23 -19
  391. package/contracts/product/PricingServiceManager.sol +3 -3
  392. package/contracts/product/Product.sol +47 -39
  393. package/contracts/product/RiskService.sol +78 -23
  394. package/contracts/product/RiskServiceManager.sol +1 -1
  395. package/contracts/registry/ChainNft.sol +4 -2
  396. package/contracts/registry/IRegistry.sol +8 -15
  397. package/contracts/registry/IRelease.sol +26 -0
  398. package/contracts/registry/Registry.sol +12 -3
  399. package/contracts/registry/RegistryAdmin.sol +121 -225
  400. package/contracts/registry/RegistryService.sol +3 -3
  401. package/contracts/registry/RegistryServiceManager.sol +1 -1
  402. package/contracts/registry/ReleaseAdmin.sol +245 -0
  403. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  404. package/contracts/registry/ReleaseRegistry.sol +129 -119
  405. package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
  406. package/contracts/registry/TokenRegistry.sol +6 -8
  407. package/contracts/shared/Component.sol +59 -98
  408. package/contracts/shared/ComponentService.sol +206 -251
  409. package/contracts/shared/ComponentServiceManager.sol +1 -1
  410. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  411. package/contracts/shared/ContractLib.sol +223 -9
  412. package/contracts/shared/IComponent.sol +4 -17
  413. package/contracts/shared/IComponentService.sol +20 -24
  414. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  415. package/contracts/shared/IRegisterable.sol +15 -4
  416. package/contracts/shared/IService.sol +3 -5
  417. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  418. package/contracts/shared/NftOwnable.sol +4 -4
  419. package/contracts/shared/PolicyHolder.sol +1 -1
  420. package/contracts/shared/Registerable.sol +44 -20
  421. package/contracts/shared/RegistryLinked.sol +7 -13
  422. package/contracts/shared/Service.sol +8 -27
  423. package/contracts/shared/TokenHandler.sol +316 -66
  424. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  425. package/contracts/staking/IStaking.sol +9 -4
  426. package/contracts/staking/Staking.sol +62 -33
  427. package/contracts/staking/StakingService.sol +41 -9
  428. package/contracts/type/Key32.sol +2 -2
  429. package/contracts/type/Key32Set.sol +62 -0
  430. package/contracts/type/NftId.sol +6 -0
  431. package/contracts/type/ObjectType.sol +32 -18
  432. package/contracts/type/RiskId.sol +23 -6
  433. package/contracts/type/RoleId.sol +5 -2
  434. package/contracts/type/Timestamp.sol +0 -5
  435. package/contracts/type/UFixed.sol +9 -119
  436. package/contracts/type/Version.sol +15 -5
  437. package/contracts/upgradeability/ProxyManager.sol +1 -1
  438. package/package.json +3 -3
  439. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  440. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  441. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  442. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  443. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
@@ -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()));
@@ -61,10 +63,10 @@ contract ClaimService is
61
63
  external
62
64
  virtual
63
65
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
66
+ restricted()
64
67
  returns (ClaimId claimId)
65
68
  {
66
- _checkNftType(policyNftId, POLICY());
67
-
69
+ // checks
68
70
  (
69
71
  ,
70
72
  IInstance instance,,
@@ -77,15 +79,9 @@ contract ClaimService is
77
79
  revert ErrorClaimServicePolicyNotOpen(policyNftId);
78
80
  }
79
81
 
80
- // TODO check claim amount > 0
81
- // check policy including this claim is still within sum insured
82
- if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
83
- revert ErrorClaimServiceClaimExceedsSumInsured(
84
- policyNftId,
85
- policyInfo.sumInsuredAmount,
86
- AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
87
- }
82
+ _checkClaimAmount(policyNftId, policyInfo, claimAmount);
88
83
 
84
+ // effects
89
85
  // create new claim
90
86
  claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
91
87
  instanceStore.createClaim(
@@ -120,6 +116,7 @@ contract ClaimService is
120
116
  virtual
121
117
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
122
118
  {
119
+ // checks
123
120
  _checkNftType(policyNftId, POLICY());
124
121
 
125
122
  (
@@ -130,8 +127,9 @@ contract ClaimService is
130
127
  IPolicy.PolicyInfo memory policyInfo
131
128
  ) = _verifyCallerWithPolicy(policyNftId);
132
129
 
133
- // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
130
+ _checkClaimAmount(policyNftId, policyInfo, confirmedAmount);
134
131
 
132
+ // effects
135
133
  // check/update claim info
136
134
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
137
135
  claimInfo.claimAmount = confirmedAmount;
@@ -149,6 +147,7 @@ contract ClaimService is
149
147
 
150
148
  emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
151
149
 
150
+ // interactions
152
151
  // callback to pool if applicable
153
152
  _processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
154
153
 
@@ -190,7 +189,6 @@ contract ClaimService is
190
189
  }
191
190
 
192
191
 
193
- // TODO add test case
194
192
  function revoke(
195
193
  NftId policyNftId,
196
194
  ClaimId claimId
@@ -198,9 +196,7 @@ contract ClaimService is
198
196
  external
199
197
  virtual
200
198
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
201
- {
202
- _checkNftType(policyNftId, POLICY());
203
-
199
+ {
204
200
  (
205
201
  ,
206
202
  IInstance instance,
@@ -277,8 +273,6 @@ contract ClaimService is
277
273
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
278
274
  returns (PayoutId payoutId)
279
275
  {
280
- _checkNftType(policyNftId, POLICY());
281
-
282
276
  if (beneficiary == address(0)) {
283
277
  revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
284
278
  }
@@ -322,8 +316,7 @@ contract ClaimService is
322
316
  virtual
323
317
  // nonReentrant() // prevents creating a reinsurance payout in a single tx
324
318
  {
325
- _checkNftType(policyNftId, POLICY());
326
-
319
+ // checks
327
320
  (
328
321
  ,
329
322
  IInstance instance,
@@ -332,9 +325,24 @@ contract ClaimService is
332
325
  IPolicy.PolicyInfo memory policyInfo
333
326
  ) = _verifyCallerWithPolicy(policyNftId);
334
327
 
335
- // TODO add check that payout exists and is open
328
+ // check that payout exists and is open
336
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
+ }
337
344
 
345
+ // effects
338
346
  // update and save payout info with instance
339
347
  payoutInfo.paidAt = TimestampLib.blockTimestamp();
340
348
  instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
@@ -360,7 +368,7 @@ contract ClaimService is
360
368
  }
361
369
 
362
370
  // update and save policy info with instance
363
- policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
371
+ policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
364
372
  instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
365
373
 
366
374
  // inform pool about payout
@@ -388,7 +396,9 @@ contract ClaimService is
388
396
  {
389
397
  NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
390
398
  IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
391
- poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
399
+ poolInfo.tokenHandler.pushToken(
400
+ beneficiary,
401
+ netPayoutAmount);
392
402
 
393
403
  // TODO add 2nd token tx if processingFeeAmount > 0
394
404
  }
@@ -398,8 +408,64 @@ contract ClaimService is
398
408
  }
399
409
  }
400
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
+
401
446
  // internal functions
402
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
+ }
403
469
 
404
470
  function _createPayout(
405
471
  NftId policyNftId,
@@ -412,6 +478,7 @@ contract ClaimService is
412
478
  virtual
413
479
  returns (PayoutId payoutId)
414
480
  {
481
+ // checks
415
482
  (
416
483
  ,
417
484
  ,
@@ -421,13 +488,23 @@ contract ClaimService is
421
488
  ) = _verifyCallerWithPolicy(policyNftId);
422
489
 
423
490
  IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
424
- StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
425
491
 
426
- // TODO add checks
427
- // claim needs to be open
428
- // 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
+ }
429
506
 
430
- // check/update claim info
507
+ // effects
431
508
  // create payout info with instance
432
509
  uint24 payoutNo = claimInfo.payoutsCount + 1;
433
510
  payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
@@ -450,10 +527,6 @@ contract ClaimService is
450
527
  claimInfo.openPayoutsCount += 1;
451
528
  instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
452
529
 
453
- // update and save policy info with instance
454
- policyInfo.payoutAmount.add(amount);
455
- instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
456
-
457
530
  emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
458
531
  }
459
532
 
@@ -465,6 +538,7 @@ contract ClaimService is
465
538
  IPolicy.PayoutInfo memory payoutInfo
466
539
  )
467
540
  internal
541
+ view
468
542
  returns (
469
543
  Amount netPayoutAmount,
470
544
  Amount processingFeeAmount,
@@ -488,8 +562,8 @@ contract ClaimService is
488
562
  beneficiary = payoutInfo.beneficiary;
489
563
  }
490
564
 
491
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
492
- if(FeeLib.gtz(productInfo.processingFee)) {
565
+ IComponents.FeeInfo memory feeInfo = instanceReader.getFeeInfo(productNftId);
566
+ if(FeeLib.gtz(feeInfo.processingFee)) {
493
567
  // TODO calculate and set net payout and processing fees
494
568
  }
495
569
  }
@@ -510,7 +584,7 @@ contract ClaimService is
510
584
  IPolicy.PolicyInfo memory policyInfo
511
585
  )
512
586
  {
513
- (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
587
+ (productNftId, instance) = _getAndVerifyActiveComponent(PRODUCT());
514
588
  instanceReader = instance.getInstanceReader();
515
589
  instanceStore = instance.getInstanceStore();
516
590
 
@@ -523,6 +597,28 @@ contract ClaimService is
523
597
  }
524
598
  }
525
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
+
526
622
  function _verifyClaim(
527
623
  InstanceReader instanceReader,
528
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
  }