@etherisc/gif-next 0.0.2-7177fd8-761 → 0.0.2-71cf987-554

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 (452) hide show
  1. package/README.md +5 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +121 -70
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +124 -5
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -37
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +157 -273
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -239
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +188 -290
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -123
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -31
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +248 -164
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +446 -81
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +85 -242
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +79 -87
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +131 -247
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  91. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -80
  94. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  96. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +79 -227
  98. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  100. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  102. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -235
  104. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  106. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +170 -226
  108. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -110
  110. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
  112. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +91 -77
  114. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +232 -131
  116. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -222
  118. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +300 -319
  120. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -97
  122. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
  124. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
  126. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -243
  128. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  130. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +280 -235
  132. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -112
  134. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  136. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
  138. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -16
  140. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  142. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +124 -97
  144. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  145. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -295
  148. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -131
  150. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
  152. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  154. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  155. package/artifacts/contracts/product/Product.sol/Product.json +136 -243
  156. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  158. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  160. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +289 -32
  164. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +495 -93
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +219 -166
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  176. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  177. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1696 -0
  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 +377 -235
  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 +68 -201
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +341 -324
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -132
  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 +321 -19
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -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 +1 -1
  216. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +79 -227
  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 +288 -16
  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 +63 -93
  245. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  246. package/artifacts/contracts/staking/Staking.sol/Staking.json +167 -270
  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 +100 -97
  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 +169 -128
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -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 +32 -8
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  267. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  269. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  271. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  273. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  275. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  277. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  279. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  281. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  283. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  285. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  287. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  289. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  291. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  295. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  302. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  304. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  306. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  307. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  308. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  309. package/contracts/authorization/AccessAdmin.sol +130 -120
  310. package/contracts/authorization/AccessManagerCloneable.sol +67 -3
  311. package/contracts/authorization/Authorization.sol +111 -40
  312. package/contracts/authorization/IAccess.sol +1 -0
  313. package/contracts/authorization/IAccessAdmin.sol +4 -4
  314. package/contracts/authorization/IAuthorization.sol +13 -7
  315. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  316. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  317. package/contracts/distribution/BasicDistribution.sol +2 -1
  318. package/contracts/distribution/Distribution.sol +7 -17
  319. package/contracts/distribution/DistributionService.sol +82 -50
  320. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  321. package/contracts/distribution/IDistributionComponent.sol +1 -1
  322. package/contracts/distribution/IDistributionService.sol +8 -2
  323. package/contracts/examples/fire/DamageLevel.sol +59 -0
  324. package/contracts/examples/fire/FirePool.sol +73 -0
  325. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  326. package/contracts/examples/fire/FireProduct.sol +415 -0
  327. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  328. package/contracts/examples/fire/FireUSD.sol +26 -0
  329. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  330. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  331. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  332. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  333. package/contracts/instance/IInstance.sol +10 -30
  334. package/contracts/instance/IInstanceService.sol +0 -20
  335. package/contracts/instance/Instance.sol +29 -51
  336. package/contracts/instance/InstanceAdmin.sol +102 -73
  337. package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
  338. package/contracts/instance/InstanceReader.sol +106 -19
  339. package/contracts/instance/InstanceService.sol +33 -88
  340. package/contracts/instance/InstanceServiceManager.sol +6 -7
  341. package/contracts/instance/InstanceStore.sol +11 -1
  342. package/contracts/instance/base/ObjectLifecycle.sol +7 -1
  343. package/contracts/instance/module/IComponents.sol +10 -5
  344. package/contracts/instance/module/IPolicy.sol +23 -23
  345. package/contracts/oracle/BasicOracle.sol +0 -1
  346. package/contracts/oracle/IOracleService.sol +2 -1
  347. package/contracts/oracle/Oracle.sol +6 -16
  348. package/contracts/oracle/OracleService.sol +47 -34
  349. package/contracts/oracle/OracleServiceManager.sol +6 -6
  350. package/contracts/pool/BasicPool.sol +14 -26
  351. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  352. package/contracts/pool/BundleService.sol +92 -36
  353. package/contracts/pool/BundleServiceManager.sol +6 -6
  354. package/contracts/pool/IBundleService.sol +10 -0
  355. package/contracts/pool/IPoolComponent.sol +18 -8
  356. package/contracts/pool/IPoolService.sol +49 -29
  357. package/contracts/pool/Pool.sol +53 -46
  358. package/contracts/pool/PoolService.sol +156 -136
  359. package/contracts/pool/PoolServiceManager.sol +4 -4
  360. package/contracts/product/ApplicationService.sol +22 -13
  361. package/contracts/product/ApplicationServiceManager.sol +4 -4
  362. package/contracts/product/BasicProduct.sol +7 -6
  363. package/contracts/product/BasicProductAuthorization.sol +0 -1
  364. package/contracts/product/ClaimService.sol +310 -115
  365. package/contracts/product/ClaimServiceManager.sol +4 -4
  366. package/contracts/product/IClaimService.sol +30 -7
  367. package/contracts/product/IPolicyService.sol +16 -20
  368. package/contracts/product/IPricingService.sol +10 -10
  369. package/contracts/product/IProductComponent.sol +23 -4
  370. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
  371. package/contracts/product/PolicyService.sol +220 -129
  372. package/contracts/product/PolicyServiceManager.sol +4 -4
  373. package/contracts/product/PricingService.sol +49 -53
  374. package/contracts/product/PricingServiceManager.sol +3 -3
  375. package/contracts/product/Product.sol +108 -66
  376. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  377. package/contracts/product/RiskServiceManager.sol +39 -0
  378. package/contracts/registry/ChainNft.sol +68 -38
  379. package/contracts/registry/IRegistry.sol +57 -18
  380. package/contracts/registry/IRegistryService.sol +5 -12
  381. package/contracts/registry/ITransferInterceptor.sol +1 -2
  382. package/contracts/registry/Registry.sol +342 -201
  383. package/contracts/registry/RegistryAdmin.sol +147 -179
  384. package/contracts/registry/RegistryService.sol +35 -46
  385. package/contracts/registry/RegistryServiceManager.sol +2 -2
  386. package/contracts/registry/ReleaseAdmin.sol +248 -0
  387. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  388. package/contracts/registry/ReleaseRegistry.sol +223 -203
  389. package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
  390. package/contracts/shared/Component.sol +36 -52
  391. package/contracts/shared/ComponentService.sol +245 -140
  392. package/contracts/shared/ComponentServiceManager.sol +8 -5
  393. package/contracts/shared/ComponentVerifyingService.sol +23 -14
  394. package/contracts/shared/ContractLib.sol +38 -0
  395. package/contracts/shared/IComponent.sol +6 -3
  396. package/contracts/shared/IComponentService.sol +25 -13
  397. package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
  398. package/contracts/shared/ILifecycle.sol +3 -1
  399. package/contracts/shared/INftOwnable.sol +2 -0
  400. package/contracts/shared/IPolicyHolder.sol +12 -22
  401. package/contracts/shared/IRegisterable.sol +11 -0
  402. package/contracts/shared/InitializableERC165.sol +2 -2
  403. package/contracts/shared/InstanceLinkedComponent.sol +72 -31
  404. package/contracts/shared/KeyValueStore.sol +1 -1
  405. package/contracts/shared/Lifecycle.sol +15 -4
  406. package/contracts/shared/NftOwnable.sol +27 -7
  407. package/contracts/shared/PolicyHolder.sol +15 -52
  408. package/contracts/shared/Registerable.sol +19 -9
  409. package/contracts/shared/RegistryLinked.sol +3 -2
  410. package/contracts/shared/Service.sol +20 -18
  411. package/contracts/shared/TokenHandler.sol +99 -22
  412. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  413. package/contracts/staking/IStaking.sol +2 -1
  414. package/contracts/staking/IStakingService.sol +0 -3
  415. package/contracts/staking/StakeManagerLib.sol +18 -25
  416. package/contracts/staking/Staking.sol +13 -32
  417. package/contracts/staking/StakingManager.sol +8 -6
  418. package/contracts/staking/StakingReader.sol +12 -5
  419. package/contracts/staking/StakingService.sol +17 -17
  420. package/contracts/staking/StakingServiceManager.sol +2 -2
  421. package/contracts/staking/TargetManagerLib.sol +7 -3
  422. package/contracts/type/Amount.sol +15 -0
  423. package/contracts/type/ClaimId.sol +6 -1
  424. package/contracts/type/NftId.sol +1 -0
  425. package/contracts/type/ObjectType.sol +16 -11
  426. package/contracts/type/PayoutId.sol +10 -10
  427. package/contracts/type/RiskId.sol +15 -1
  428. package/contracts/type/RoleId.sol +2 -11
  429. package/contracts/type/Seconds.sol +8 -0
  430. package/contracts/type/StateId.sol +15 -1
  431. package/contracts/type/UFixed.sol +4 -0
  432. package/contracts/upgradeability/ProxyManager.sol +68 -34
  433. package/contracts/upgradeability/Versionable.sol +2 -2
  434. package/package.json +2 -1
  435. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  436. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  437. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  438. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  439. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  440. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  441. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  442. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  443. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  444. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  445. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  446. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
  447. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
  448. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  449. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  450. package/contracts/product/ProductServiceManager.sol +0 -39
  451. package/contracts/shared/InitializableCustom.sol +0 -177
  452. package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -2,14 +2,15 @@
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
- import {NftId} from "../type/NftId.sol";
7
- import {PayoutId} from "../type/PayoutId.sol";
8
7
  import {IBundle} from "../instance/module/IBundle.sol";
9
8
  import {IInstance} from "../instance/IInstance.sol";
10
9
  import {InstanceReader} from "../instance/InstanceReader.sol";
11
10
  import {IPolicy} from "../instance/module/IPolicy.sol";
12
11
  import {IService} from "../shared/IService.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {PayoutId} from "../type/PayoutId.sol";
13
14
  import {RoleId} from "../type/RoleId.sol";
14
15
  import {Seconds} from "../type/Seconds.sol";
15
16
  import {StateId} from "../type/StateId.sol";
@@ -26,14 +27,13 @@ interface IPoolService is IService {
26
27
  event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
27
28
  event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
28
29
 
30
+ event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
31
+
32
+ error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
29
33
  error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
30
34
  error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
31
35
  error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
32
36
  error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
33
-
34
- /// @dev defines the required role for bundle owners for the calling pool
35
- /// default implementation returns PUBLIC ROLE
36
- function setBundleOwnerRole(RoleId bundleOwnerRole) external;
37
37
 
38
38
  /// @dev sets the max balance amount for the calling pool
39
39
  function setMaxBalanceAmount(Amount maxBalanceAmount) external;
@@ -68,10 +68,10 @@ interface IPoolService is IService {
68
68
  ) external;
69
69
 
70
70
 
71
- /// @dev reduces the locked collateral in the bundle associated with the specified policy
71
+ /// @dev reduces the locked collateral in the bundle associated with the specified policy and updates pool/bundle counters
72
72
  /// every payout of a policy reduces the collateral by the payout amount
73
73
  /// may only be called by the claim service for unlocked pool components
74
- function reduceCollateral(
74
+ function processPayout(
75
75
  IInstance instance,
76
76
  address token,
77
77
  NftId policyNftId,
@@ -80,19 +80,28 @@ interface IPoolService is IService {
80
80
  ) external;
81
81
 
82
82
 
83
- /// @dev create a new bundle for the provided parameters
84
- /// staking fees will be deducted by the pool service from the staking amount
83
+ /// @dev create a new empty bundle with the provided parameters
85
84
  /// may only be called by registered and unlocked pool components.
86
- /// The pool balance is equal to the pool fees plus the capital of all bundles.
87
85
  function createBundle(
88
86
  address owner, // initial bundle owner
89
87
  Fee memory fee, // fees deducted from premium that go to bundle owner
90
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
91
88
  Seconds lifetime, // initial duration for which new policies are covered
92
89
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
93
90
  )
94
91
  external
95
- returns(NftId bundleNftId, Amount netStakedAmount); // the nft id of the newly created bundle
92
+ returns(NftId bundleNftId); // the nft id of the newly created bundle
93
+
94
+
95
+ /// @dev increase stakes for bundle
96
+ /// staking fees will be deducted by the pool service from the staking amount
97
+ /// may only be called by registered and unlocked pool components
98
+ function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
99
+
100
+
101
+ /// @dev decrease stakes for bundle
102
+ /// performance fees will be deducted by the pool service from the staking amount
103
+ /// may only be called by registered and unlocked pool components
104
+ function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
96
105
 
97
106
 
98
107
  /// @dev closes the specified bundle
@@ -103,21 +112,30 @@ interface IPoolService is IService {
103
112
  function closeBundle(NftId bundleNftId) external;
104
113
 
105
114
 
106
- /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
107
- function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
115
+ /// @dev Informs product about available funds to process a confirmed claim.
116
+ /// The function triggers a callback to the product component when the product's property isProcessingFundedClaims is set.
117
+ function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
108
118
 
109
- /// @dev increase stakes for bundle
110
- /// staking fees will be deducted by the pool service from the staking amount
111
- /// may only be called by registered and unlocked pool components
112
- function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
113
119
 
114
- /// @dev decrease stakes for bundle
115
- /// performance fees will be deducted by the pool service from the staking amount
116
- /// may only be called by registered and unlocked pool components
117
- function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
120
+ /// @dev Fund the specified pool wallet with the provided amount.
121
+ /// This function will collect the amount from the sender address and transfers it to the pool wallet.
122
+ /// The function will not update balance amounts managed by the framework.
123
+ /// Only available for externally managed pools.
124
+ function fundPoolWallet(NftId poolNftId, Amount amount) external;
118
125
 
119
126
 
120
- /// @dev calulate required collateral for the provided parameters
127
+ /// @dev Defund the specified pool wallet with the provided amount.
128
+ /// This function will transfer the amount from the pool wallet to the sender address.
129
+ /// The function will not update balance amounts managed by the framework.
130
+ /// Only available for externally managed pools.
131
+ function defundPoolWallet(NftId poolNftId, Amount amount) external;
132
+
133
+
134
+ /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
135
+ function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
136
+
137
+
138
+ /// @dev Calulate required collateral for the provided parameters.
121
139
  function calculateRequiredCollateral(
122
140
  InstanceReader instanceReader,
123
141
  NftId productNftId,
@@ -126,12 +144,14 @@ interface IPoolService is IService {
126
144
  external
127
145
  view
128
146
  returns(
129
- Amount localCollateralAmount,
130
- Amount totalCollateralAmount
147
+ Amount totalCollateralAmount,
148
+ Amount localCollateralAmount
131
149
  );
132
150
 
133
151
 
134
- /// @dev calulate required collateral for the provided parameters
152
+ /// @dev calulate required collateral for the provided parameters.
153
+ /// Collateralization is applied to sum insured.
154
+ /// Retention level defines the fraction of the collateral that is required locally.
135
155
  function calculateRequiredCollateral(
136
156
  UFixed collateralizationLevel,
137
157
  UFixed retentionLevel,
@@ -140,8 +160,8 @@ interface IPoolService is IService {
140
160
  external
141
161
  pure
142
162
  returns(
143
- Amount localCollateralAmount,
144
- Amount totalCollateralAmount
163
+ Amount totalCollateralAmount,
164
+ Amount localCollateralAmount
145
165
  );
146
166
 
147
167
  }
@@ -2,7 +2,8 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
5
+ import {BUNDLE, COMPONENT, POLICY, POOL} from "../type/ObjectType.sol";
6
+ import {ClaimId} from "../type/ClaimId.sol";
6
7
  import {IBundleService} from "./IBundleService.sol";
7
8
  import {IAuthorization} from "../authorization/IAuthorization.sol";
8
9
  import {IPoolComponent} from "./IPoolComponent.sol";
@@ -10,13 +11,12 @@ import {IPoolService} from "./IPoolService.sol";
10
11
  import {IComponents} from "../instance/module/IComponents.sol";
11
12
  import {IComponentService} from "../shared/IComponentService.sol";
12
13
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
- import {Fee, FeeLib} from "../type/Fee.sol";
14
- import {NftId, NftIdLib} from "../type/NftId.sol";
14
+ import {Fee} from "../type/Fee.sol";
15
+ import {NftId} from "../type/NftId.sol";
15
16
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
16
17
  import {Seconds} from "../type/Seconds.sol";
17
18
  import {Timestamp} from "../type/Timestamp.sol";
18
- import {TokenHandler} from "../shared/TokenHandler.sol";
19
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
+ import {UFixedLib} from "../type/UFixed.sol";
20
20
 
21
21
  abstract contract Pool is
22
22
  InstanceLinkedComponent,
@@ -51,6 +51,7 @@ abstract contract Pool is
51
51
  public
52
52
  virtual
53
53
  restricted()
54
+ onlyNftOfType(applicationNftId, POLICY())
54
55
  {
55
56
  if(!applicationMatchesBundle(
56
57
  applicationNftId,
@@ -67,6 +68,21 @@ abstract contract Pool is
67
68
  }
68
69
 
69
70
 
71
+ /// @dev see {IPoolComponent.processConfirmedClaim}
72
+ function processConfirmedClaim(
73
+ NftId policyNftId,
74
+ ClaimId claimId,
75
+ Amount amount
76
+ )
77
+ public
78
+ virtual
79
+ restricted()
80
+ onlyNftOfType(policyNftId, POLICY())
81
+ {
82
+ // default implementation is empty
83
+ }
84
+
85
+
70
86
  /// @dev see {IPoolComponent.applicationMatchesBundle}
71
87
  /// Override this function to implement any custom application verification
72
88
  /// Default implementation always returns true
@@ -80,27 +96,20 @@ abstract contract Pool is
80
96
  public
81
97
  virtual
82
98
  view
99
+ onlyNftOfType(applicationNftId, POLICY())
100
+ onlyNftOfType(bundleNftId, BUNDLE())
83
101
  returns (bool isMatching)
84
102
  {
85
103
  return true;
86
104
  }
87
105
 
88
-
89
- function register()
90
- external
91
- virtual
92
- onlyOwner()
93
- {
94
- _getPoolStorage()._componentService.registerPool();
95
- _approveTokenHandler(type(uint256).max);
96
- }
97
-
98
106
  /// @inheritdoc IPoolComponent
99
107
  function withdrawBundleFees(NftId bundleNftId, Amount amount)
100
108
  external
101
109
  virtual
102
110
  restricted()
103
111
  onlyBundleOwner(bundleNftId)
112
+ onlyNftOfType(bundleNftId, BUNDLE())
104
113
  returns (Amount withdrawnAmount)
105
114
  {
106
115
  return _withdrawBundleFees(bundleNftId, amount);
@@ -113,28 +122,28 @@ abstract contract Pool is
113
122
  view
114
123
  returns (IComponents.PoolInfo memory poolInfo)
115
124
  {
116
- return IComponents.PoolInfo(
117
- PUBLIC_ROLE(), // bundleOwnerRole
118
- AmountLib.max(), // maxCapitalAmount,
119
- isNftInterceptor(), // isInterceptingBundleTransfers
120
- false, // isExternallyManaged,
121
- false, // isVerifyingApplications,
122
- UFixedLib.toUFixed(1), // collateralizationLevel,
123
- UFixedLib.toUFixed(1) // retentionLevel,
124
- );
125
+ return IComponents.PoolInfo({
126
+ maxBalanceAmount: AmountLib.max(),
127
+ bundleOwnerRole: PUBLIC_ROLE(),
128
+ isInterceptingBundleTransfers: isNftInterceptor(),
129
+ isProcessingConfirmedClaims: false,
130
+ isExternallyManaged: false,
131
+ isVerifyingApplications: false,
132
+ collateralizationLevel: UFixedLib.toUFixed(1),
133
+ retentionLevel: UFixedLib.toUFixed(1)
134
+ });
125
135
  }
126
136
 
127
137
  // Internals
128
138
 
129
139
  function _initializePool(
130
140
  address registry,
131
- NftId instanceNftId,
141
+ NftId productNftId,
132
142
  string memory name,
133
143
  address token,
134
144
  IAuthorization authorization,
135
145
  bool isInterceptingNftTransfers,
136
146
  address initialOwner,
137
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
138
147
  bytes memory componentData // component specifidc data
139
148
  )
140
149
  internal
@@ -143,14 +152,13 @@ abstract contract Pool is
143
152
  {
144
153
  _initializeInstanceLinkedComponent(
145
154
  registry,
146
- instanceNftId,
155
+ productNftId,
147
156
  name,
148
157
  token,
149
158
  POOL(),
150
159
  authorization,
151
160
  isInterceptingNftTransfers,
152
161
  initialOwner,
153
- registryData,
154
162
  componentData);
155
163
 
156
164
  PoolStorage storage $ = _getPoolStorage();
@@ -158,7 +166,7 @@ abstract contract Pool is
158
166
  $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
159
167
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
160
168
 
161
- registerInterface(type(IPoolComponent).interfaceId);
169
+ _registerInterface(type(IPoolComponent).interfaceId);
162
170
  }
163
171
 
164
172
  /// @dev increases the staked tokens by the specified amount
@@ -169,9 +177,9 @@ abstract contract Pool is
169
177
  )
170
178
  internal
171
179
  virtual
172
- returns(Amount netAmount)
180
+ returns(Amount)
173
181
  {
174
- _getPoolStorage()._poolService.stake(bundleNftId, amount);
182
+ return _getPoolStorage()._poolService.stake(bundleNftId, amount);
175
183
  }
176
184
 
177
185
 
@@ -260,16 +268,6 @@ abstract contract Pool is
260
268
  _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
261
269
  }
262
270
 
263
- /// @dev Sets the required role to create/own bundles.
264
- /// May only be called once after setting up a pool.
265
- /// May only be called by pool owner.
266
- function _setBundleOwnerRole(RoleId bundleOwnerRole)
267
- internal
268
- virtual
269
- {
270
- _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
271
- }
272
-
273
271
 
274
272
  /// @dev Update pool fees to the specified values.
275
273
  /// Pool fee: are deducted from the premium amount and goes to the pool owner.
@@ -287,21 +285,19 @@ abstract contract Pool is
287
285
  _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
288
286
  }
289
287
 
290
- /// @dev Creates a new bundle using the provided parameter values.
288
+ /// @dev Creates a new empty bundle using the provided parameter values.
291
289
  function _createBundle(
292
290
  address bundleOwner,
293
291
  Fee memory fee,
294
- Amount amount,
295
292
  Seconds lifetime,
296
293
  bytes memory filter
297
294
  )
298
295
  internal
299
- returns(NftId bundleNftId, Amount netStakedAmount)
296
+ returns(NftId bundleNftId)
300
297
  {
301
- (bundleNftId, netStakedAmount) = _getPoolStorage()._poolService.createBundle(
298
+ bundleNftId = _getPoolStorage()._poolService.createBundle(
302
299
  bundleOwner,
303
300
  fee,
304
- amount,
305
301
  lifetime,
306
302
  filter);
307
303
 
@@ -320,6 +316,17 @@ abstract contract Pool is
320
316
  return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
321
317
  }
322
318
 
319
+ function _processFundedClaim(
320
+ NftId policyNftId,
321
+ ClaimId claimId,
322
+ Amount availableAmount
323
+ )
324
+ internal
325
+ {
326
+ _getPoolStorage()._poolService.processFundedClaim(
327
+ policyNftId, claimId, availableAmount);
328
+ }
329
+
323
330
  function _getPoolStorage() private pure returns (PoolStorage storage $) {
324
331
  assembly {
325
332
  $.slot := POOL_STORAGE_LOCATION_V1