@etherisc/gif-next 0.0.2-8daf0fe-431 → 0.0.2-8e283ec-993

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 (451) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +38 -52
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +8 -8
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  15. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +8 -8
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +23 -4
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +85 -248
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +18 -18
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -222
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -37
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
  33. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  34. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  35. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  36. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1545 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1980 -0
  41. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  42. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  44. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  46. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
  47. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  48. package/artifacts/contracts/instance/Instance.sol/Instance.json +17 -106
  49. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +102 -100
  51. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
  53. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +467 -127
  55. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +44 -151
  57. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  59. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +255 -240
  61. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  63. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  66. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  68. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  70. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  76. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  77. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  78. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -235
  80. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +21 -21
  82. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  84. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -37
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -219
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +79 -280
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +19 -19
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +407 -174
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +72 -94
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +293 -104
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +69 -276
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +396 -253
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +90 -82
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +47 -248
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +19 -19
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +212 -181
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +120 -6
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -119
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +47 -63
  134. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  135. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -318
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +97 -101
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  145. package/artifacts/contracts/product/Product.sol/Product.json +47 -248
  146. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  147. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  148. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +276 -9
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  158. package/artifacts/contracts/registry/Registry.sol/Registry.json +495 -67
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +251 -134
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +26 -7
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  173. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  174. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -161
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -95
  179. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  181. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  182. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  183. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  184. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
  189. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  191. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  200. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  201. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  202. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -222
  204. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  205. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  206. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  208. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  209. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  210. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  212. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  213. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  214. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  216. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  217. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  218. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  220. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  222. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  227. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  229. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  230. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  231. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  233. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  235. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  237. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  239. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  241. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  243. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +58 -22
  245. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  247. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  255. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  257. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  259. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  261. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  263. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  265. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  267. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  269. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  271. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  273. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +14 -14
  275. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  277. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  279. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  281. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  283. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  285. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  287. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  289. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  291. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  293. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  295. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  296. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  299. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  300. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  301. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  302. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  303. package/contracts/authorization/AccessAdmin.sol +28 -24
  304. package/contracts/authorization/Authorization.sol +5 -2
  305. package/contracts/authorization/IAccessAdmin.sol +0 -1
  306. package/contracts/authorization/IServiceAuthorization.sol +3 -0
  307. package/contracts/authorization/ServiceAuthorization.sol +4 -0
  308. package/contracts/distribution/BasicDistribution.sol +4 -15
  309. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  310. package/contracts/distribution/Distribution.sol +23 -11
  311. package/contracts/distribution/DistributionService.sol +76 -42
  312. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  313. package/contracts/distribution/IDistributionComponent.sol +8 -4
  314. package/contracts/distribution/IDistributionService.sol +18 -2
  315. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  316. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  317. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  318. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  319. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  320. package/contracts/instance/IInstance.sol +11 -34
  321. package/contracts/instance/IInstanceService.sol +5 -5
  322. package/contracts/instance/Instance.sol +13 -38
  323. package/contracts/instance/InstanceAdmin.sol +31 -9
  324. package/contracts/instance/InstanceAuthorizationV3.sol +16 -14
  325. package/contracts/instance/InstanceReader.sol +125 -11
  326. package/contracts/instance/InstanceService.sol +71 -49
  327. package/contracts/instance/InstanceServiceManager.sol +8 -13
  328. package/contracts/instance/InstanceStore.sol +18 -4
  329. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  330. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
  331. package/contracts/instance/module/IBundle.sol +1 -1
  332. package/contracts/instance/module/IComponents.sol +4 -8
  333. package/contracts/instance/module/IDistribution.sol +0 -1
  334. package/contracts/instance/module/IPolicy.sol +24 -24
  335. package/contracts/mock/Dip.sol +1 -1
  336. package/contracts/oracle/IOracleComponent.sol +2 -1
  337. package/contracts/oracle/Oracle.sol +17 -7
  338. package/contracts/oracle/OracleService.sol +11 -8
  339. package/contracts/oracle/OracleServiceManager.sol +8 -11
  340. package/contracts/pool/BasicPool.sol +7 -5
  341. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  342. package/contracts/pool/BundleService.sol +197 -55
  343. package/contracts/pool/BundleServiceManager.sol +8 -11
  344. package/contracts/pool/IBundleService.sol +33 -5
  345. package/contracts/pool/IPoolComponent.sol +24 -8
  346. package/contracts/pool/IPoolService.sol +55 -34
  347. package/contracts/pool/Pool.sol +72 -30
  348. package/contracts/pool/PoolService.sol +223 -127
  349. package/contracts/pool/PoolServiceManager.sol +6 -9
  350. package/contracts/product/ApplicationService.sol +62 -65
  351. package/contracts/product/ApplicationServiceManager.sol +6 -6
  352. package/contracts/product/BasicProduct.sol +3 -32
  353. package/contracts/product/BasicProductAuthorization.sol +3 -0
  354. package/contracts/product/ClaimService.sol +243 -112
  355. package/contracts/product/ClaimServiceManager.sol +6 -6
  356. package/contracts/product/IApplicationService.sol +1 -0
  357. package/contracts/product/IClaimService.sol +29 -6
  358. package/contracts/product/IPolicyService.sol +31 -32
  359. package/contracts/product/IPricingService.sol +7 -7
  360. package/contracts/product/IProductComponent.sol +18 -4
  361. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  362. package/contracts/product/PolicyService.sol +361 -190
  363. package/contracts/product/PolicyServiceManager.sol +6 -9
  364. package/contracts/product/PricingService.sol +46 -46
  365. package/contracts/product/PricingServiceManager.sol +5 -8
  366. package/contracts/product/Product.sol +90 -50
  367. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  368. package/contracts/product/RiskServiceManager.sol +39 -0
  369. package/contracts/registry/ChainNft.sol +65 -32
  370. package/contracts/registry/IRegistry.sol +65 -16
  371. package/contracts/registry/IRegistryService.sol +0 -9
  372. package/contracts/registry/Registry.sol +340 -211
  373. package/contracts/registry/RegistryAdmin.sol +172 -71
  374. package/contracts/registry/RegistryService.sol +59 -66
  375. package/contracts/registry/RegistryServiceManager.sol +4 -4
  376. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  377. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +155 -182
  378. package/contracts/registry/ServiceAuthorizationV3.sol +7 -8
  379. package/contracts/registry/TokenRegistry.sol +2 -2
  380. package/contracts/shared/Component.sol +30 -43
  381. package/contracts/shared/ComponentService.sol +90 -28
  382. package/contracts/shared/ComponentServiceManager.sol +10 -7
  383. package/contracts/shared/ComponentVerifyingService.sol +2 -3
  384. package/contracts/shared/ContractLib.sol +38 -0
  385. package/contracts/shared/IComponent.sol +4 -4
  386. package/contracts/shared/IComponentService.sol +15 -9
  387. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  388. package/contracts/shared/IKeyValueStore.sol +1 -0
  389. package/contracts/shared/ILifecycle.sol +1 -2
  390. package/contracts/shared/IPolicyHolder.sol +12 -22
  391. package/contracts/shared/IService.sol +1 -1
  392. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  393. package/contracts/shared/InstanceLinkedComponent.sol +26 -6
  394. package/contracts/shared/KeyValueStore.sol +6 -2
  395. package/contracts/shared/Lifecycle.sol +16 -69
  396. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  397. package/contracts/shared/NftOwnable.sol +7 -7
  398. package/contracts/shared/PolicyHolder.sol +17 -57
  399. package/contracts/shared/Registerable.sol +4 -4
  400. package/contracts/shared/RegistryLinked.sol +3 -2
  401. package/contracts/shared/Service.sol +19 -15
  402. package/contracts/shared/TokenHandler.sol +100 -19
  403. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  404. package/contracts/staking/IStaking.sol +3 -3
  405. package/contracts/staking/IStakingService.sol +12 -5
  406. package/contracts/staking/StakeManagerLib.sol +18 -25
  407. package/contracts/staking/Staking.sol +27 -42
  408. package/contracts/staking/StakingLifecycle.sol +23 -0
  409. package/contracts/staking/StakingManager.sol +10 -12
  410. package/contracts/staking/StakingReader.sol +12 -16
  411. package/contracts/staking/StakingService.sol +10 -14
  412. package/contracts/staking/StakingServiceManager.sol +4 -4
  413. package/contracts/staking/StakingStore.sol +15 -23
  414. package/contracts/staking/TargetManagerLib.sol +7 -3
  415. package/contracts/type/Amount.sol +12 -5
  416. package/contracts/type/Blocknumber.sol +7 -1
  417. package/contracts/type/ObjectType.sol +18 -18
  418. package/contracts/type/PayoutId.sol +10 -10
  419. package/contracts/type/Referral.sol +1 -0
  420. package/contracts/type/Seconds.sol +21 -1
  421. package/contracts/type/StateId.sol +1 -0
  422. package/contracts/type/Timestamp.sol +11 -1
  423. package/contracts/type/UFixed.sol +33 -10
  424. package/contracts/type/Version.sol +3 -1
  425. package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
  426. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  427. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  428. package/package.json +3 -3
  429. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  430. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  431. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  432. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -181
  433. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  434. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  435. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  436. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  437. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  438. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  439. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1140
  440. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  441. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  442. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  443. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  444. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  445. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  446. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  447. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  448. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  449. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  450. package/contracts/product/ProductServiceManager.sol +0 -42
  451. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,48 +1,25 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRisk} from "../instance/module/IRisk.sol";
5
- import {IService} from "./IApplicationService.sol";
6
-
7
- import {IComponents} from "../instance/module/IComponents.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
- import {IProductComponent} from "./IProductComponent.sol";
10
- import {Product} from "./Product.sol";
11
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
12
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
13
- import {IInstance} from "../instance/IInstance.sol";
14
- import {IPolicy} from "../instance/module/IPolicy.sol";
15
- import {IRisk} from "../instance/module/IRisk.sol";
16
- import {IBundle} from "../instance/module/IBundle.sol";
17
- import {IProductService} from "./IProductService.sol";
18
-
19
- import {TokenHandler} from "../shared/TokenHandler.sol";
20
-
21
- import {IVersionable} from "../shared/IVersionable.sol";
22
- import {Versionable} from "../shared/Versionable.sol";
23
-
24
4
  import {Amount, AmountLib} from "../type/Amount.sol";
25
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
26
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
- import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
28
- import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../type/ObjectType.sol";
29
- import {SUBMITTED, ACTIVE, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
30
- import {NftId, NftIdLib} from "../type/NftId.sol";
31
- import {Fee, FeeLib} from "../type/Fee.sol";
32
- import {ReferralId} from "../type/Referral.sol";
33
- import {RiskId} from "../type/RiskId.sol";
5
+ import {TimestampLib} from "../type/Timestamp.sol";
6
+ import {ObjectType, CLAIM, PRODUCT, POOL} 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";
34
10
  import {StateId} from "../type/StateId.sol";
35
11
  import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
36
12
  import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
37
- import {Version, VersionLib} from "../type/Version.sol";
38
-
39
13
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
14
+ import {ContractLib} from "../shared/ContractLib.sol";
40
15
  import {InstanceReader} from "../instance/InstanceReader.sol";
41
- import {IBundleService} from "../pool/IBundleService.sol";
42
16
  import {IClaimService} from "./IClaimService.sol";
17
+ import {IComponents} from "../instance/module/IComponents.sol";
18
+ import {IInstance} from "../instance/IInstance.sol";
19
+ import {IPolicy} from "../instance/module/IPolicy.sol";
20
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
21
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
43
22
  import {IPoolService} from "../pool/IPoolService.sol";
44
- import {IService} from "../shared/IService.sol";
45
- import {Service} from "../shared/Service.sol";
46
23
 
47
24
 
48
25
  contract ClaimService is
@@ -61,16 +38,15 @@ contract ClaimService is
61
38
  initializer()
62
39
  {
63
40
  (
64
- address registryAddress,,
65
- //address managerAddress
41
+ address registryAddress,
66
42
  address authority
67
- ) = abi.decode(data, (address, address, address));
43
+ ) = abi.decode(data, (address, address));
68
44
 
69
- initializeService(registryAddress, authority, owner);
45
+ _initializeService(registryAddress, authority, owner);
70
46
 
71
47
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
72
48
 
73
- registerInterface(type(IClaimService).interfaceId);
49
+ _registerInterface(type(IClaimService).interfaceId);
74
50
  }
75
51
 
76
52
  function submit(
@@ -80,9 +56,11 @@ contract ClaimService is
80
56
  )
81
57
  external
82
58
  virtual
59
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
83
60
  returns (ClaimId claimId)
84
61
  {
85
62
  (
63
+ ,
86
64
  IInstance instance,
87
65
  InstanceReader instanceReader,
88
66
  IPolicy.PolicyInfo memory policyInfo
@@ -93,6 +71,7 @@ contract ClaimService is
93
71
  revert ErrorClaimServicePolicyNotOpen(policyNftId);
94
72
  }
95
73
 
74
+ // TODO check claim amount > 0
96
75
  // check policy including this claim is still within sum insured
97
76
  if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
98
77
  revert ErrorClaimServiceClaimExceedsSumInsured(
@@ -106,14 +85,14 @@ contract ClaimService is
106
85
  instance.getInstanceStore().createClaim(
107
86
  policyNftId,
108
87
  claimId,
109
- IPolicy.ClaimInfo(
110
- claimAmount,
111
- AmountLib.zero(), // paidAmount
112
- 0, // payoutsCount
113
- 0, // openPayoutsCount
114
- claimData, // claim submission data
115
- "", // claim processing data
116
- TimestampLib.zero())); // closedAt
88
+ IPolicy.ClaimInfo({
89
+ claimAmount: claimAmount,
90
+ paidAmount: AmountLib.zero(),
91
+ payoutsCount: 0,
92
+ openPayoutsCount: 0,
93
+ submissionData: claimData,
94
+ processData: "",
95
+ closedAt: TimestampLib.zero()}));
117
96
 
118
97
  // update and save policy info with instance
119
98
  policyInfo.claimsCount += 1;
@@ -133,26 +112,40 @@ contract ClaimService is
133
112
  )
134
113
  external
135
114
  virtual
115
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
136
116
  {
137
117
  (
118
+ NftId productNftId,
138
119
  IInstance instance,
139
120
  InstanceReader instanceReader,
140
121
  IPolicy.PolicyInfo memory policyInfo
141
122
  ) = _verifyCallerWithPolicy(policyNftId);
142
123
 
124
+ // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
125
+
143
126
  // check/update claim info
144
127
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
145
128
  claimInfo.claimAmount = confirmedAmount;
146
129
  claimInfo.processData = data;
147
130
  instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
148
131
 
132
+ // TODO test if claim results in total claim amount == sum insured amount
133
+ // should policy still be active it needs to automatically become expired
134
+
149
135
  // update and save policy info with instance
150
136
  policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
151
137
  instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
152
138
 
153
139
  emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
140
+
141
+ // callback to pool if applicable
142
+ _processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
143
+
144
+ // callback to policy holder if applicable
145
+ _policyHolderClaimConfirmed(policyNftId, claimId, confirmedAmount);
154
146
  }
155
147
 
148
+
156
149
  function decline(
157
150
  NftId policyNftId,
158
151
  ClaimId claimId,
@@ -160,8 +153,10 @@ contract ClaimService is
160
153
  )
161
154
  external
162
155
  virtual
156
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
163
157
  {
164
158
  (
159
+ ,
165
160
  IInstance instance,
166
161
  InstanceReader instanceReader,
167
162
  IPolicy.PolicyInfo memory policyInfo
@@ -180,14 +175,46 @@ contract ClaimService is
180
175
  emit LogClaimServiceClaimDeclined(policyNftId, claimId);
181
176
  }
182
177
 
178
+
179
+ // TODO add test case
180
+ function revoke(
181
+ NftId policyNftId,
182
+ ClaimId claimId
183
+ )
184
+ external
185
+ virtual
186
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
187
+ {
188
+ (
189
+ ,
190
+ IInstance instance,
191
+ InstanceReader instanceReader,
192
+ IPolicy.PolicyInfo memory policyInfo
193
+ ) = _verifyCallerWithPolicy(policyNftId);
194
+
195
+ // check/update claim info
196
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
197
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
198
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, REVOKED());
199
+
200
+ // update and save policy info with instance
201
+ policyInfo.openClaimsCount -= 1;
202
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
203
+
204
+ emit LogClaimServiceClaimRevoked(policyNftId, claimId);
205
+ }
206
+
207
+
183
208
  function close(
184
209
  NftId policyNftId,
185
210
  ClaimId claimId
186
211
  )
187
212
  external
188
213
  virtual
214
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
189
215
  {
190
216
  (
217
+ ,
191
218
  IInstance instance,
192
219
  InstanceReader instanceReader,
193
220
  IPolicy.PolicyInfo memory policyInfo
@@ -218,51 +245,48 @@ contract ClaimService is
218
245
  }
219
246
 
220
247
 
221
- function createPayout(
248
+ function createPayoutForBeneficiary(
222
249
  NftId policyNftId,
223
250
  ClaimId claimId,
224
251
  Amount amount,
252
+ address beneficiary,
225
253
  bytes memory data
226
254
  )
227
255
  external
256
+ virtual
257
+ // nonReentrant() // prevents creating a reinsurance claim in a single tx
228
258
  returns (PayoutId payoutId)
229
259
  {
230
- (
231
- IInstance instance,
232
- InstanceReader instanceReader,
233
- IPolicy.PolicyInfo memory policyInfo
234
- ) = _verifyCallerWithPolicy(policyNftId);
235
-
236
- IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
237
- StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
238
-
239
- // TODO add checks
240
- // claim needs to be open
241
- // claim.paidAmount + amount <= claim.claimAmount
260
+ if (beneficiary == address(0)) {
261
+ revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
262
+ }
242
263
 
243
- // check/update claim info
244
- // create payout info with instance
245
- uint8 claimNo = claimInfo.payoutsCount + 1;
246
- payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
247
- instance.getInstanceStore().createPayout(
264
+ return _createPayout(
248
265
  policyNftId,
249
- payoutId,
250
- IPolicy.PayoutInfo(
251
- payoutId.toClaimId(),
252
- amount,
253
- data,
254
- TimestampLib.zero()));
255
-
256
- // update and save claim info with instance
257
- claimInfo.payoutsCount += 1;
258
- claimInfo.openPayoutsCount += 1;
259
- instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
266
+ claimId,
267
+ amount,
268
+ beneficiary,
269
+ data);
270
+ }
260
271
 
261
- // update and save policy info with instance
262
- policyInfo.payoutAmount.add(amount);
263
- instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
264
272
 
265
- emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
273
+ function createPayout(
274
+ NftId policyNftId,
275
+ ClaimId claimId,
276
+ Amount amount,
277
+ bytes memory data
278
+ )
279
+ external
280
+ virtual
281
+ // nonReentrant() // prevents creating a reinsurance payout in a single tx
282
+ returns (PayoutId payoutId)
283
+ {
284
+ return _createPayout(
285
+ policyNftId,
286
+ claimId,
287
+ amount,
288
+ address(0), // defaults to owner of policy nft
289
+ data);
266
290
  }
267
291
 
268
292
 
@@ -272,8 +296,10 @@ contract ClaimService is
272
296
  )
273
297
  external
274
298
  virtual
299
+ // nonReentrant() // prevents creating a reinsurance payout in a single tx
275
300
  {
276
301
  (
302
+ ,
277
303
  IInstance instance,
278
304
  InstanceReader instanceReader,
279
305
  IPolicy.PolicyInfo memory policyInfo
@@ -286,7 +312,6 @@ contract ClaimService is
286
312
  payoutInfo.paidAt = TimestampLib.blockTimestamp();
287
313
  instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
288
314
 
289
- // TODO update and save claim info with instance
290
315
  ClaimId claimId = payoutId.toClaimId();
291
316
  Amount payoutAmount = payoutInfo.amount;
292
317
  IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
@@ -319,20 +344,84 @@ contract ClaimService is
319
344
  // transfer payout token and fee
320
345
  (
321
346
  Amount netPayoutAmount,
347
+ Amount processingFeeAmount,
322
348
  address beneficiary
323
- ) = _transferPayoutAmount(
349
+ ) = _calculatePayoutAmount(
324
350
  instanceReader,
325
351
  policyNftId,
326
352
  policyInfo,
327
353
  payoutInfo);
328
354
 
329
- // TODO callback IPolicyHolder
355
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
356
+
357
+ {
358
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
359
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
360
+ poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
361
+
362
+ // TODO add 2nd token tx if processingFeeAmount > 0
363
+ }
330
364
 
331
- emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
365
+ // callback to policy holder if applicable
366
+ _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
332
367
  }
333
368
 
334
- // TODO create (I)TreasuryService that deals with all gif related token transfers
335
- function _transferPayoutAmount(
369
+ // internal functions
370
+
371
+
372
+ function _createPayout(
373
+ NftId policyNftId,
374
+ ClaimId claimId,
375
+ Amount amount,
376
+ address beneficiary,
377
+ bytes memory data
378
+ )
379
+ internal
380
+ virtual
381
+ returns (PayoutId payoutId)
382
+ {
383
+ (
384
+ ,
385
+ IInstance instance,
386
+ InstanceReader instanceReader,
387
+ IPolicy.PolicyInfo memory policyInfo
388
+ ) = _verifyCallerWithPolicy(policyNftId);
389
+
390
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
391
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
392
+
393
+ // TODO add checks
394
+ // claim needs to be open
395
+ // claim.paidAmount + amount <= claim.claimAmount
396
+
397
+ // check/update claim info
398
+ // create payout info with instance
399
+ uint24 payoutNo = claimInfo.payoutsCount + 1;
400
+ payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
401
+ instance.getInstanceStore().createPayout(
402
+ policyNftId,
403
+ payoutId,
404
+ IPolicy.PayoutInfo({
405
+ claimId: payoutId.toClaimId(),
406
+ amount: amount,
407
+ beneficiary: beneficiary,
408
+ data: data,
409
+ paidAt: TimestampLib.zero()}));
410
+
411
+ // update and save claim info with instance
412
+ claimInfo.payoutsCount += 1;
413
+ claimInfo.openPayoutsCount += 1;
414
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
415
+
416
+ // update and save policy info with instance
417
+ policyInfo.payoutAmount.add(amount);
418
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
419
+
420
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
421
+ }
422
+
423
+
424
+ function _calculatePayoutAmount(
336
425
  InstanceReader instanceReader,
337
426
  NftId policyNftId,
338
427
  IPolicy.PolicyInfo memory policyInfo,
@@ -341,6 +430,7 @@ contract ClaimService is
341
430
  internal
342
431
  returns (
343
432
  Amount netPayoutAmount,
433
+ Amount processingFeeAmount,
344
434
  address beneficiary
345
435
  )
346
436
  {
@@ -354,38 +444,20 @@ contract ClaimService is
354
444
  IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
355
445
 
356
446
  netPayoutAmount = payoutAmount;
357
- beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
447
+
448
+ if (payoutInfo.beneficiary == address(0)) {
449
+ beneficiary = getRegistry().ownerOf(policyNftId);
450
+ } else {
451
+ beneficiary = payoutInfo.beneficiary;
452
+ }
358
453
 
359
454
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
360
455
  if(FeeLib.gtz(productInfo.processingFee)) {
361
- // TODO calculate net payout and processing fees
362
- // TODO transfer processing fees to product wallet
363
- // TODO inform product to update fee book keeping
456
+ // TODO calculate and set net payout and processing fees
364
457
  }
365
-
366
- poolInfo.tokenHandler.transfer(
367
- poolInfo.wallet,
368
- beneficiary,
369
- netPayoutAmount);
370
458
  }
371
459
  }
372
460
 
373
- // internal functions
374
-
375
- function _getBeneficiary(
376
- NftId policyNftId,
377
- ClaimId claimId
378
- )
379
- internal
380
- returns (address beneficiary)
381
- {
382
- // TODO check if owner is IPolicyHolder
383
- // if so, obtain beneficiary from this contract
384
-
385
- // default beneficiary is policy nft owner
386
- beneficiary = getRegistry().ownerOf(policyNftId);
387
- }
388
-
389
461
 
390
462
  function _verifyCallerWithPolicy(
391
463
  NftId policyNftId
@@ -394,12 +466,12 @@ contract ClaimService is
394
466
  view
395
467
  virtual
396
468
  returns (
469
+ NftId productNftId,
397
470
  IInstance instance,
398
471
  InstanceReader instanceReader,
399
472
  IPolicy.PolicyInfo memory policyInfo
400
473
  )
401
474
  {
402
- NftId productNftId;
403
475
  (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
404
476
  instanceReader = instance.getInstanceReader();
405
477
 
@@ -435,6 +507,65 @@ contract ClaimService is
435
507
  claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
436
508
  }
437
509
 
510
+ function _processConfirmedClaimByPool(
511
+ InstanceReader instanceReader,
512
+ NftId productNftId,
513
+ NftId policyNftId,
514
+ ClaimId claimId,
515
+ Amount amount
516
+ )
517
+ internal
518
+ {
519
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
520
+ if (instanceReader.getPoolInfo(poolNftId).isProcessingConfirmedClaims) {
521
+ address poolAddress = getRegistry().getObjectAddress(poolNftId);
522
+ IPoolComponent(poolAddress).processConfirmedClaim(policyNftId, claimId, amount);
523
+ }
524
+ }
525
+
526
+
527
+ function _policyHolderClaimConfirmed(
528
+ NftId policyNftId,
529
+ ClaimId claimId,
530
+ Amount confirmedAmount
531
+ )
532
+ internal
533
+ {
534
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
535
+ if(address(policyHolder) != address(0)) {
536
+ policyHolder.claimConfirmed(policyNftId, claimId, confirmedAmount);
537
+ }
538
+ }
539
+
540
+
541
+ function _policyHolderPayoutExecuted(
542
+ NftId policyNftId,
543
+ PayoutId payoutId,
544
+ address beneficiary,
545
+ Amount payoutAmount
546
+ )
547
+ internal
548
+ {
549
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
550
+ if(address(policyHolder) != address(0)) {
551
+ policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
552
+ }
553
+ }
554
+
555
+
556
+ function _getPolicyHolder(NftId policyNftId)
557
+ internal
558
+ view
559
+ returns (IPolicyHolder policyHolder)
560
+ {
561
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
562
+ policyHolder = IPolicyHolder(policyHolderAddress);
563
+
564
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
565
+ policyHolder = IPolicyHolder(address(0));
566
+ }
567
+ }
568
+
438
569
 
439
570
  function _getDomain() internal pure override returns(ObjectType) {
440
571
  return CLAIM();
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {ClaimService} from "./ClaimService.sol";
7
7
 
8
8
  contract ClaimServiceManager is ProxyManager {
@@ -12,14 +12,14 @@ contract ClaimServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
19
  ClaimService svc = new ClaimService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
23
  address(svc),
24
24
  data,
25
25
  salt);
@@ -24,6 +24,7 @@ interface IApplicationService is IService {
24
24
  address applicationOwner,
25
25
  RiskId riskId,
26
26
  Amount sumInsuredAmount,
27
+ Amount premiumAmount,
27
28
  Seconds lifetime,
28
29
  NftId bundleNftId,
29
30
  ReferralId referralId,
@@ -23,16 +23,19 @@ interface IClaimService is
23
23
  event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
24
24
  event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
25
25
  event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
26
+ event LogClaimServiceClaimRevoked(NftId policyNftId, ClaimId claimId);
26
27
  event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
27
28
 
28
29
  event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
29
- event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
30
+ event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount, Amount processingFeeAmount);
30
31
 
31
32
  error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
32
33
  error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
33
34
  error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
35
+ error ErrorClaimServiceBeneficiaryIsZero(NftId policyNftId, ClaimId claimId);
36
+ error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
34
37
 
35
- error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
38
+ error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint24 openPayouts);
36
39
  error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
37
40
  error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
38
41
 
@@ -46,9 +49,6 @@ interface IClaimService is
46
49
  ) external returns (ClaimId claimId);
47
50
 
48
51
 
49
- // TODO add claim revoke functionality
50
-
51
-
52
52
  /// @dev declines the specified claim
53
53
  /// function can only be called by product, policy needs to match with calling product
54
54
  function decline(
@@ -58,6 +58,14 @@ interface IClaimService is
58
58
  ) external;
59
59
 
60
60
 
61
+ /// @dev revokes the specified claim
62
+ /// function can only be called by product, policy needs to match with calling product
63
+ function revoke(
64
+ NftId policyNftId,
65
+ ClaimId claimId
66
+ ) external;
67
+
68
+
61
69
  /// @dev confirms the specified claim and specifies the payout amount
62
70
  /// function can only be called by product, policy needs to match with calling product
63
71
  function confirm(
@@ -76,7 +84,8 @@ interface IClaimService is
76
84
  ) external;
77
85
 
78
86
 
79
- /// @dev creates a new payout for the specified claim
87
+ /// @dev Creates a new payout for the specified claim.
88
+ /// The beneficiary is the holder of the policy NFT
80
89
  /// returns the id of the newly created payout, this id is unique for the specified policy
81
90
  /// function can only be called by product, policy needs to match with calling product
82
91
  function createPayout(
@@ -89,6 +98,20 @@ interface IClaimService is
89
98
  returns (PayoutId payoutId);
90
99
 
91
100
 
101
+ /// @dev Creates a new payout for the specified claim and beneficiary.
102
+ /// returns the id of the newly created payout, this id is unique for the specified policy
103
+ /// function can only be called by product, policy needs to match with calling product
104
+ function createPayoutForBeneficiary(
105
+ NftId policyNftId,
106
+ ClaimId claimId,
107
+ Amount amount,
108
+ address beneficiary,
109
+ bytes memory data
110
+ )
111
+ external
112
+ returns (PayoutId payoutId);
113
+
114
+
92
115
  /// @dev processes the specified payout
93
116
  /// this includes moving the payout token to the beneficiary (default: policy holder)
94
117
  /// function can only be called by product, policy needs to match with calling product