@etherisc/gif-next 0.0.2-8ce6c0b-352 → 0.0.2-8d69bcd-543

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