@etherisc/gif-next 0.0.2-b421459-499 → 0.0.2-b43fece-589

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 (472) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +206 -309
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +134 -277
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +284 -223
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +116 -104
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +121 -92
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +149 -31
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1491 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2037 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1613 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2327 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +464 -141
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +340 -253
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +164 -280
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  93. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +96 -80
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +106 -262
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +152 -345
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +490 -171
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +161 -89
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +277 -16
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +107 -145
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +422 -215
  118. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  119. package/artifacts/contracts/pool/Pool.sol/Pool.json +118 -328
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +558 -392
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +107 -87
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +160 -281
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  131. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +148 -97
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  147. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.json +202 -307
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  156. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  157. package/artifacts/contracts/product/Product.sol/Product.json +160 -281
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -34
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  167. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  169. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  170. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +526 -245
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -106
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +474 -19
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +85 -80
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  216. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +98 -265
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  220. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  224. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  233. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  245. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  246. package/artifacts/contracts/staking/Staking.sol/Staking.json +174 -291
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +174 -128
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  296. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  299. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  303. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  306. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  307. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  308. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  309. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  310. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  311. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  312. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  313. package/contracts/authorization/AccessAdmin.sol +64 -59
  314. package/contracts/authorization/Authorization.sol +111 -40
  315. package/contracts/authorization/IAccess.sol +1 -0
  316. package/contracts/authorization/IAccessAdmin.sol +4 -3
  317. package/contracts/authorization/IAuthorization.sol +13 -7
  318. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  319. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  320. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  321. package/contracts/distribution/BasicDistribution.sol +6 -16
  322. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  323. package/contracts/distribution/Distribution.sol +28 -26
  324. package/contracts/distribution/DistributionService.sol +128 -75
  325. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  326. package/contracts/distribution/IDistributionComponent.sol +9 -5
  327. package/contracts/distribution/IDistributionService.sol +18 -2
  328. package/contracts/examples/fire/DamageLevel.sol +59 -0
  329. package/contracts/examples/fire/FirePool.sol +86 -0
  330. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  331. package/contracts/examples/fire/FireProduct.sol +431 -0
  332. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  333. package/contracts/examples/fire/FireUSD.sol +26 -0
  334. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  335. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  336. package/contracts/examples/unpermissioned/SimplePool.sol +81 -0
  337. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  338. package/contracts/instance/IInstance.sol +10 -30
  339. package/contracts/instance/IInstanceService.sol +0 -20
  340. package/contracts/instance/Instance.sol +29 -51
  341. package/contracts/instance/InstanceAdmin.sol +42 -31
  342. package/contracts/instance/InstanceAuthorizationV3.sol +13 -21
  343. package/contracts/instance/InstanceReader.sol +115 -25
  344. package/contracts/instance/InstanceService.sol +65 -97
  345. package/contracts/instance/InstanceServiceManager.sol +8 -13
  346. package/contracts/instance/InstanceStore.sol +12 -1
  347. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  348. package/contracts/instance/module/IBundle.sol +1 -1
  349. package/contracts/instance/module/IComponents.sol +11 -12
  350. package/contracts/instance/module/IDistribution.sol +0 -1
  351. package/contracts/instance/module/IPolicy.sol +24 -24
  352. package/contracts/mock/Dip.sol +1 -1
  353. package/contracts/oracle/BasicOracle.sol +0 -1
  354. package/contracts/oracle/IOracleComponent.sol +2 -1
  355. package/contracts/oracle/IOracleService.sol +2 -1
  356. package/contracts/oracle/Oracle.sol +21 -22
  357. package/contracts/oracle/OracleService.sol +56 -42
  358. package/contracts/oracle/OracleServiceManager.sol +8 -11
  359. package/contracts/pool/BasicPool.sol +38 -27
  360. package/contracts/pool/BasicPoolAuthorization.sol +22 -3
  361. package/contracts/pool/BundleService.sol +258 -69
  362. package/contracts/pool/BundleServiceManager.sol +8 -11
  363. package/contracts/pool/IBundleService.sol +44 -10
  364. package/contracts/pool/IPoolComponent.sol +20 -10
  365. package/contracts/pool/IPoolService.sol +67 -45
  366. package/contracts/pool/Pool.sol +150 -116
  367. package/contracts/pool/PoolService.sol +336 -166
  368. package/contracts/pool/PoolServiceManager.sol +6 -9
  369. package/contracts/product/ApplicationService.sol +70 -65
  370. package/contracts/product/ApplicationServiceManager.sol +6 -6
  371. package/contracts/product/BasicProduct.sol +11 -44
  372. package/contracts/product/BasicProductAuthorization.sol +2 -0
  373. package/contracts/product/ClaimService.sol +316 -146
  374. package/contracts/product/ClaimServiceManager.sol +6 -6
  375. package/contracts/product/IApplicationService.sol +1 -0
  376. package/contracts/product/IClaimService.sol +31 -7
  377. package/contracts/product/IPolicyService.sol +34 -32
  378. package/contracts/product/IPricingService.sol +10 -10
  379. package/contracts/product/IProductComponent.sol +24 -4
  380. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  381. package/contracts/product/PolicyService.sol +419 -203
  382. package/contracts/product/PolicyServiceManager.sol +6 -9
  383. package/contracts/product/PricingService.sol +54 -54
  384. package/contracts/product/PricingServiceManager.sol +5 -8
  385. package/contracts/product/Product.sol +126 -87
  386. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  387. package/contracts/product/RiskServiceManager.sol +39 -0
  388. package/contracts/registry/ChainNft.sol +68 -38
  389. package/contracts/registry/IRegistry.sol +55 -18
  390. package/contracts/registry/IRegistryService.sol +5 -12
  391. package/contracts/registry/ITransferInterceptor.sol +1 -2
  392. package/contracts/registry/Registry.sol +342 -201
  393. package/contracts/registry/RegistryAdmin.sol +134 -51
  394. package/contracts/registry/RegistryService.sol +39 -64
  395. package/contracts/registry/RegistryServiceManager.sol +4 -4
  396. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  397. package/contracts/registry/ReleaseRegistry.sol +204 -190
  398. package/contracts/registry/ServiceAuthorizationV3.sol +26 -23
  399. package/contracts/shared/Component.sol +47 -63
  400. package/contracts/shared/ComponentService.sol +314 -150
  401. package/contracts/shared/ComponentServiceManager.sol +10 -7
  402. package/contracts/shared/ComponentVerifyingService.sol +23 -16
  403. package/contracts/shared/ContractLib.sol +38 -0
  404. package/contracts/shared/IComponent.sol +10 -6
  405. package/contracts/shared/IComponentService.sol +38 -20
  406. package/contracts/shared/IInstanceLinkedComponent.sol +8 -17
  407. package/contracts/shared/ILifecycle.sol +3 -1
  408. package/contracts/shared/INftOwnable.sol +2 -0
  409. package/contracts/shared/IPolicyHolder.sol +12 -22
  410. package/contracts/shared/IRegisterable.sol +11 -0
  411. package/contracts/shared/IService.sol +1 -1
  412. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  413. package/contracts/shared/InstanceLinkedComponent.sol +85 -23
  414. package/contracts/shared/KeyValueStore.sol +1 -1
  415. package/contracts/shared/Lifecycle.sol +15 -4
  416. package/contracts/shared/NftOwnable.sol +29 -9
  417. package/contracts/shared/PolicyHolder.sol +17 -57
  418. package/contracts/shared/Registerable.sol +19 -11
  419. package/contracts/shared/RegistryLinked.sol +3 -2
  420. package/contracts/shared/Service.sol +23 -22
  421. package/contracts/shared/TokenHandler.sol +100 -19
  422. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  423. package/contracts/staking/IStaking.sol +3 -2
  424. package/contracts/staking/IStakingService.sol +0 -3
  425. package/contracts/staking/StakeManagerLib.sol +18 -25
  426. package/contracts/staking/Staking.sol +28 -42
  427. package/contracts/staking/StakingManager.sol +10 -11
  428. package/contracts/staking/StakingReader.sol +17 -13
  429. package/contracts/staking/StakingService.sol +25 -29
  430. package/contracts/staking/StakingServiceManager.sol +4 -4
  431. package/contracts/staking/StakingStore.sol +5 -15
  432. package/contracts/staking/TargetManagerLib.sol +7 -3
  433. package/contracts/type/Amount.sol +27 -5
  434. package/contracts/type/Blocknumber.sol +7 -1
  435. package/contracts/type/ClaimId.sol +6 -1
  436. package/contracts/type/NftId.sol +1 -0
  437. package/contracts/type/ObjectType.sol +16 -11
  438. package/contracts/type/PayoutId.sol +10 -10
  439. package/contracts/type/Referral.sol +1 -0
  440. package/contracts/type/RiskId.sol +16 -2
  441. package/contracts/type/RoleId.sol +0 -12
  442. package/contracts/type/Seconds.sol +21 -1
  443. package/contracts/type/StateId.sol +15 -1
  444. package/contracts/type/Timestamp.sol +11 -1
  445. package/contracts/type/UFixed.sol +33 -10
  446. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  447. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  448. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  449. package/package.json +2 -1
  450. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  451. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  452. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  453. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  454. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  455. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  456. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  457. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  458. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  459. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  460. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  461. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  462. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  463. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  464. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  465. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  466. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  467. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  468. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  469. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  470. package/contracts/product/ProductServiceManager.sol +0 -42
  471. package/contracts/shared/InitializableCustom.sol +0 -177
  472. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -2,36 +2,25 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
5
6
  import {IComponents} from "../instance/module/IComponents.sol";
6
7
  import {IComponentService} from "../shared/IComponentService.sol";
7
8
  import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
8
10
  import {IInstance} from "../instance/IInstance.sol";
9
11
  import {InstanceStore} from "../instance/InstanceStore.sol";
10
12
  import {IPolicy} from "../instance/module/IPolicy.sol";
11
13
 
12
- import {IVersionable} from "../shared/IVersionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.sol";
14
- import {NftId, NftIdLib} from "../type/NftId.sol";
15
- import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
16
- import {POOL_OWNER_ROLE, RoleId} from "../type/RoleId.sol";
17
- import {Pool} from "./Pool.sol";
18
-
19
14
  import {Amount, AmountLib} from "../type/Amount.sol";
20
- import {Fee, FeeLib} from "../type/Fee.sol";
21
- import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
- import {Seconds} from "../type/Seconds.sol";
23
- import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
24
- import {Version, VersionLib} from "../type/Version.sol";
25
- import {Versionable} from "../shared/Versionable.sol";
26
-
27
- import {IService} from "../shared/IService.sol";
28
- import {Service} from "../shared/Service.sol";
29
15
  import {BundleSet} from "../instance/BundleSet.sol";
30
16
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
31
- import {IBundleService} from "./IBundleService.sol";
32
- import {IRegistryService} from "../registry/IRegistryService.sol";
33
- import {InstanceService} from "../instance/InstanceService.sol";
17
+ import {Fee} from "../type/Fee.sol";
34
18
  import {InstanceReader} from "../instance/InstanceReader.sol";
19
+ import {NftId, NftIdLib} from "../type/NftId.sol";
20
+ import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
21
+ import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
+ import {Seconds} from "../type/Seconds.sol";
23
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
35
24
 
36
25
  string constant BUNDLE_SERVICE_NAME = "BundleService";
37
26
 
@@ -39,8 +28,7 @@ contract BundleService is
39
28
  ComponentVerifyingService,
40
29
  IBundleService
41
30
  {
42
- using NftIdLib for NftId;
43
-
31
+
44
32
  string public constant NAME = "BundleService";
45
33
 
46
34
  address private _registryAddress;
@@ -52,20 +40,20 @@ contract BundleService is
52
40
  bytes memory data
53
41
  )
54
42
  internal
55
- initializer
56
43
  virtual override
44
+ initializer()
57
45
  {
58
- address registryAddress;
59
- address initialOwner;
60
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
61
- // TODO while PoolService is not deployed in PoolServiceManager constructor
62
- // owner is PoolServiceManager deployer
63
- initializeService(registryAddress, address(0), owner);
46
+ (
47
+ address registryAddress,
48
+ address authority
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ _initializeService(registryAddress, authority, owner);
64
52
 
65
53
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
66
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
67
55
 
68
- registerInterface(type(IBundleService).interfaceId);
56
+ _registerInterface(type(IBundleService).interfaceId);
69
57
  }
70
58
 
71
59
 
@@ -75,7 +63,10 @@ contract BundleService is
75
63
  )
76
64
  external
77
65
  virtual
66
+ restricted()
78
67
  {
68
+ _checkNftType(bundleNftId, BUNDLE());
69
+
79
70
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
80
71
  InstanceReader instanceReader = instance.getInstanceReader();
81
72
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
@@ -93,19 +84,18 @@ contract BundleService is
93
84
 
94
85
 
95
86
  function create(
96
- IInstance instance,
97
- NftId poolNftId,
98
87
  address owner,
99
88
  Fee memory bundleFee,
100
- Amount stakingAmount,
101
89
  Seconds lifetime,
102
90
  bytes calldata filter
103
91
  )
104
92
  external
105
- override
106
- restricted
93
+ virtual
94
+ restricted()
107
95
  returns(NftId bundleNftId)
108
96
  {
97
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
98
+
109
99
  // register bundle with registry
110
100
  bundleNftId = _registryService.registerBundle(
111
101
  IRegistry.ObjectInfo(
@@ -123,26 +113,21 @@ contract BundleService is
123
113
  InstanceStore instanceStore = instance.getInstanceStore();
124
114
  instanceStore.createBundle(
125
115
  bundleNftId,
126
- IBundle.BundleInfo(
127
- poolNftId,
128
- bundleFee,
129
- filter,
130
- lifetime,
131
- TimestampLib.blockTimestamp().addSeconds(lifetime),
132
- zeroTimestamp()));
133
-
134
- // bundle book keeping
135
- _componentService.increaseBundleBalance(
136
- instanceStore,
137
- bundleNftId,
138
- stakingAmount,
139
- AmountLib.zero()); // fee amount
116
+ IBundle.BundleInfo({
117
+ poolNftId: poolNftId,
118
+ fee: bundleFee,
119
+ filter: filter,
120
+ activatedAt: TimestampLib.blockTimestamp(),
121
+ expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
122
+ closedAt: zeroTimestamp()
123
+ })
124
+ );
140
125
 
141
126
  // put bundle under bundle managemet
142
127
  BundleSet bundleManager = instance.getBundleSet();
143
128
  bundleManager.add(bundleNftId);
144
129
 
145
- // TODO add logging
130
+ emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
146
131
  }
147
132
 
148
133
 
@@ -157,26 +142,35 @@ contract BundleService is
157
142
  virtual
158
143
  restricted()
159
144
  {
145
+ _checkNftType(policyNftId, POLICY());
146
+ _checkNftType(bundleNftId, BUNDLE());
147
+
160
148
  InstanceReader instanceReader = instance.getInstanceReader();
161
- StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
162
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
163
149
 
164
- // ensure bundle is active and not yet expired
165
- if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
166
- revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
150
+ {
151
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
152
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
153
+
154
+ // ensure bundle is active and not yet expired
155
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
156
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
157
+ }
167
158
  }
168
159
 
169
- // ensure bundle capacity is sufficent to collateralize policy
170
160
  InstanceStore instanceStore = instance.getInstanceStore();
171
- (
172
- Amount balanceAmount,
173
- Amount lockedAmount,
174
- Amount feeAmount
175
- ) = instanceStore.getAmounts(bundleNftId);
176
161
 
177
- Amount capacity = balanceAmount - (lockedAmount + feeAmount);
178
- if(capacity < collateralAmount) {
179
- revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
162
+ {
163
+ // ensure bundle capacity is sufficent to collateralize policy
164
+ (
165
+ Amount balanceAmount,
166
+ Amount lockedAmount,
167
+ Amount feeAmount
168
+ ) = instanceStore.getAmounts(bundleNftId);
169
+
170
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
171
+ if(capacity < collateralAmount) {
172
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
173
+ }
180
174
  }
181
175
 
182
176
  // updated locked amount
@@ -190,7 +184,10 @@ contract BundleService is
190
184
  function lock(NftId bundleNftId)
191
185
  external
192
186
  virtual
187
+ restricted()
193
188
  {
189
+ _checkNftType(bundleNftId, BUNDLE());
190
+
194
191
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
195
192
 
196
193
  // udpate bundle state
@@ -207,7 +204,10 @@ contract BundleService is
207
204
  function unlock(NftId bundleNftId)
208
205
  external
209
206
  virtual
207
+ restricted()
210
208
  {
209
+ _checkNftType(bundleNftId, BUNDLE());
210
+
211
211
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
212
212
 
213
213
  // udpate bundle state
@@ -227,10 +227,12 @@ contract BundleService is
227
227
  )
228
228
  external
229
229
  virtual
230
- restricted
230
+ restricted()
231
+ returns (Amount unstakedAmount, Amount feeAmount)
231
232
  {
232
- // udpate bundle state
233
- instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
233
+ _checkNftType(bundleNftId, BUNDLE());
234
+
235
+ InstanceReader instanceReader = instance.getInstanceReader();
234
236
 
235
237
  // ensure no open policies attached to bundle
236
238
  BundleSet bundleManager = instance.getBundleSet();
@@ -239,8 +241,121 @@ contract BundleService is
239
241
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
240
242
  }
241
243
 
242
- // update set of active bundles
243
- bundleManager.lock(bundleNftId);
244
+ {
245
+ // update bundle state
246
+ InstanceStore instanceStore = instance.getInstanceStore();
247
+ instanceStore.updateBundleState(bundleNftId, CLOSED());
248
+ bundleManager.lock(bundleNftId);
249
+
250
+ // decrease bundle counters
251
+ Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
252
+ feeAmount = instanceReader.getFeeAmount(bundleNftId);
253
+ unstakedAmount = balanceAmountWithFees - feeAmount;
254
+ _componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
255
+ }
256
+ }
257
+
258
+ /// @inheritdoc IBundleService
259
+ function stake(
260
+ IInstance instance,
261
+ NftId bundleNftId,
262
+ Amount amount
263
+ )
264
+ external
265
+ virtual
266
+ restricted()
267
+ {
268
+ _checkNftType(bundleNftId, BUNDLE());
269
+
270
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
271
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
272
+
273
+ if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
274
+ || bundleInfo.expiredAt < TimestampLib.blockTimestamp()
275
+ || bundleInfo.closedAt.gtz()) {
276
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
277
+ }
278
+
279
+ _componentService.increaseBundleBalance(
280
+ instance.getInstanceStore(),
281
+ bundleNftId,
282
+ amount,
283
+ AmountLib.zero());
284
+ }
285
+
286
+ /// @inheritdoc IBundleService
287
+ function unstake(
288
+ IInstance instance,
289
+ NftId bundleNftId,
290
+ Amount amount
291
+ )
292
+ external
293
+ virtual
294
+ restricted()
295
+ returns (Amount unstakedAmount)
296
+ {
297
+ _checkNftType(bundleNftId, BUNDLE());
298
+
299
+ InstanceStore instanceStore = instance.getInstanceStore();
300
+ (
301
+ Amount balanceAmount,
302
+ Amount lockedAmount,
303
+ Amount feeAmount
304
+ ) = instanceStore.getAmounts(bundleNftId);
305
+
306
+ unstakedAmount = amount;
307
+ Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
308
+
309
+ // if amount is max, then unstake all available
310
+ if (amount.gte(AmountLib.max())) {
311
+ unstakedAmount = availableAmount;
312
+ }
313
+
314
+ // ensure unstaked amount does not exceed available amount
315
+ if (unstakedAmount > availableAmount) {
316
+ revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
317
+ }
318
+
319
+ _componentService.decreaseBundleBalance(
320
+ instanceStore,
321
+ bundleNftId,
322
+ unstakedAmount,
323
+ AmountLib.zero());
324
+ }
325
+
326
+ /// @inheritdoc IBundleService
327
+ function extend(NftId bundleNftId, Seconds lifetimeExtension)
328
+ external
329
+ virtual
330
+ restricted()
331
+ returns (Timestamp extendedExpiredAt)
332
+ {
333
+ _checkNftType(bundleNftId, BUNDLE());
334
+
335
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
336
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
337
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
338
+
339
+ // ensure bundle belongs to the pool
340
+ if (bundleInfo.poolNftId != poolNftId) {
341
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
342
+ }
343
+
344
+ // ensure bundle is active and not yet expired
345
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
346
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
347
+ }
348
+
349
+ if (lifetimeExtension.eqz()) {
350
+ revert ErrorBundleServiceExtensionLifetimeIsZero();
351
+ }
352
+
353
+ bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
354
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
355
+
356
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
357
+
358
+ return bundleInfo.expiredAt;
244
359
  }
245
360
 
246
361
 
@@ -254,6 +369,9 @@ contract BundleService is
254
369
  virtual
255
370
  restricted()
256
371
  {
372
+ _checkNftType(policyNftId, POLICY());
373
+ _checkNftType(bundleNftId, BUNDLE());
374
+
257
375
  instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
258
376
  }
259
377
 
@@ -266,14 +384,85 @@ contract BundleService is
266
384
  virtual
267
385
  restricted
268
386
  {
387
+ _checkNftType(policyNftId, POLICY());
388
+
269
389
  // ensure policy is closeable
270
- if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
390
+ if (!policyIsCloseable(instance, policyNftId)) {
271
391
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
272
392
  }
273
393
 
274
394
  instance.getBundleSet().unlinkPolicy(policyNftId);
275
395
  }
276
396
 
397
+ /// @inheritdoc IBundleService
398
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
399
+ public
400
+ virtual
401
+ restricted()
402
+ returns (Amount withdrawnAmount)
403
+ {
404
+ _checkNftType(bundleNftId, BUNDLE());
405
+
406
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
407
+ InstanceReader reader = instance.getInstanceReader();
408
+
409
+ IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
410
+ address poolWallet = poolInfo.wallet;
411
+
412
+ // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
413
+
414
+ // determine withdrawn amount
415
+ withdrawnAmount = amount;
416
+ if (withdrawnAmount.gte(AmountLib.max())) {
417
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
418
+ } else {
419
+ if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
420
+ revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
421
+ }
422
+ }
423
+
424
+ // decrease fee counters by withdrawnAmount
425
+ {
426
+ InstanceStore store = instance.getInstanceStore();
427
+ // decrease fee amount of the bundle
428
+ _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
429
+ // decrease pool balance
430
+ _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
431
+ }
432
+
433
+ // transfer amount to bundle owner
434
+ {
435
+ address owner = getRegistry().ownerOf(bundleNftId);
436
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
437
+ poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
438
+ }
439
+ }
440
+
441
+ /// @inheritdoc IBundleService
442
+ function policyIsCloseable(IInstance instance, NftId policyNftId)
443
+ public
444
+ view
445
+ returns (bool isCloseable)
446
+ {
447
+ _checkNftType(policyNftId, POLICY());
448
+
449
+ IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
450
+
451
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
452
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
453
+ if (info.closedAt.gtz()) { return false; } // not closeable: already closed
454
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
455
+
456
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
457
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
458
+
459
+ // not closeable: not yet expired
460
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
461
+
462
+ // all conditionsl to close the policy are met
463
+ return true;
464
+ }
465
+
277
466
  /// @dev links policy to bundle
278
467
  function _linkPolicy(IInstance instance, NftId policyNftId)
279
468
  internal
@@ -1,12 +1,9 @@
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 {BundleService} from "./BundleService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {ObjectType, REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract BundleServiceManager is ProxyManager {
12
9
 
@@ -15,15 +12,15 @@ contract BundleServiceManager is ProxyManager {
15
12
  /// @dev initializes proxy manager with pool service implementation
16
13
  constructor(
17
14
  address authority,
18
- address registryAddress,
15
+ address registry,
19
16
  bytes32 salt
20
17
  )
21
- ProxyManager(registryAddress)
22
18
  {
23
- BundleService bundleSrv = new BundleService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
26
- address(bundleSrv),
19
+ BundleService svc = new BundleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
27
24
  data,
28
25
  salt);
29
26
 
@@ -13,6 +13,7 @@ import {Timestamp} from "../type/Timestamp.sol";
13
13
 
14
14
  interface IBundleService is IService {
15
15
 
16
+ event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
16
17
  event LogBundleServiceBundleActivated(NftId bundleNftId);
17
18
  event LogBundleServiceBundleLocked(NftId bundleNftId);
18
19
 
@@ -26,14 +27,19 @@ interface IBundleService is IService {
26
27
 
27
28
  error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
29
 
29
- /// @dev create a new bundle for the specified attributes
30
- /// may only be called by pool service
30
+ error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
31
+
32
+ error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
33
+
34
+ error ErrorBundleServiceExtensionLifetimeIsZero();
35
+
36
+ event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
37
+ event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
38
+
39
+ /// @dev Create a new bundle for the specified attributes.
31
40
  function create(
32
- IInstance instance, // instance relevant for bundle
33
- NftId poolNftId, // the pool the bundle will be linked to
34
41
  address owner, // initial bundle owner
35
42
  Fee memory fee, // fees deducted from premium that go to bundle owner
36
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
37
43
  Seconds lifetime, // initial duration for which new policies are covered
38
44
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
39
45
  )
@@ -41,11 +47,20 @@ interface IBundleService is IService {
41
47
  returns(NftId bundleNftId); // the nft id of the newly created bundle
42
48
 
43
49
 
44
- /// @dev increase bundle stakes by the specified amount
45
- /// may only be called by the bundle owner
46
- // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
50
+ /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
51
+ /// may only be called by the pool service
52
+ function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
47
53
 
48
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
54
+ /// @dev decrease bundle stakes by the specified amount
55
+ /// may only be called by the pool service
56
+ /// @param instance the instance relevant for the bundle
57
+ /// @param bundleNftId the bundle nft id
58
+ /// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
59
+ /// @return unstakedAmount the effective unstaked amount
60
+ function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
61
+
62
+ /// @dev extend the lifetime of the bundle by the specified time in seconds
63
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
49
64
 
50
65
  /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
51
66
  /// only active bundles may be locked
@@ -61,10 +76,12 @@ interface IBundleService is IService {
61
76
  /// only open bundles (active or locked) may be closed
62
77
  /// to close a bundle it may not have any non-closed polices attached to it
63
78
  /// may only be called by registered and unlocked pool components
79
+ /// @return balanceAmount the unstaked amount that was remaining in the bundle
80
+ /// @return feeAmount the fee amount that was remaining for the bundle
64
81
  function close(
65
82
  IInstance instance,
66
83
  NftId bundleNftId
67
- ) external;
84
+ ) external returns (Amount balanceAmount, Amount feeAmount);
68
85
 
69
86
  /// @dev set bundle fee to provided value
70
87
  /// may only be called by registered and unlocked pool components
@@ -103,4 +120,21 @@ interface IBundleService is IService {
103
120
  IInstance instance,
104
121
  NftId policyNftId
105
122
  ) external;
123
+
124
+ // FIXME: move to pool service
125
+ /// @dev Withdraw bundle feeds for the given bundle
126
+ /// @param bundleNftId the bundle Nft Id
127
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
128
+ /// @return withdrawnAmount the effective withdrawn amount
129
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
130
+
131
+ /// @dev returns true iff policy may be closed
132
+ /// a policy can be closed all conditions below are met
133
+ /// - policy exists
134
+ /// - has been activated
135
+ /// - is not yet closed
136
+ /// - has no open claims
137
+ /// - claim amount matches sum insured amount or is expired
138
+ function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
139
+
106
140
  }
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
+ import {ClaimId} from "../type/ClaimId.sol";
5
6
  import {Fee} from "../type/Fee.sol";
6
7
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
8
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -20,21 +21,19 @@ interface IPoolComponent is IInstanceLinkedComponent {
20
21
 
21
22
  event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
22
23
 
23
- /// @dev this is a callback function that is called by the product service when underwriting a policy.
24
- /// the pool has the option to check the details and object to underwriting by reverting.
25
- /// the function is only called for "active" pools that ask to be involved/notified
26
- /// by product related state changes.
24
+ /// @dev This is a callback function that is called by the product service when underwriting a policy.
25
+ /// The pool has the option to check the details and object to underwriting by reverting.
26
+ /// The function is only called for "active" pools that ask to be involved/notified.
27
+ /// The default implementation is empty.
27
28
  function verifyApplication(
28
29
  NftId applicationNftId,
29
- bytes memory applicationData,
30
30
  NftId bundleNftId,
31
- bytes memory bundleFilter,
32
31
  Amount collateralizationAmount
33
32
  ) external;
34
33
 
35
- /// @dev returns true iff the application matches with the bundle
36
- /// this is a callback function that is only called if a pool declares itself as a verifying pool
37
- /// default implementation returns true
34
+ /// @dev Returns true iff the application matches with the bundle.
35
+ /// This is a callback function that is only called if a pool declares itself as a verifying pool
36
+ /// The default implementation returns true.
38
37
  function applicationMatchesBundle(
39
38
  NftId applicationNftId,
40
39
  bytes memory applicationData,
@@ -46,7 +45,18 @@ interface IPoolComponent is IInstanceLinkedComponent {
46
45
  view
47
46
  returns (bool isMatching);
48
47
 
49
- /// @dev returns initial pool specific infos for this pool
48
+
49
+ /// @dev This is a callback function that is called by the claim service when a claim is confirmed.
50
+ /// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
51
+ /// The default implementation is empty.
52
+ function processConfirmedClaim(
53
+ NftId policyNftId,
54
+ ClaimId claimId,
55
+ Amount amount
56
+ ) external;
57
+
58
+
59
+ /// @dev Returns initial pool specific infos for this pool
50
60
  function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
51
61
 
52
62
  }