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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +206 -309
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +134 -277
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +284 -223
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +116 -104
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +121 -92
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +149 -31
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1491 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2037 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1613 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2327 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +464 -141
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +340 -253
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +164 -280
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  93. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +96 -80
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +106 -262
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +152 -345
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +490 -171
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +161 -89
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +277 -16
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +107 -145
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +422 -215
  118. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  119. package/artifacts/contracts/pool/Pool.sol/Pool.json +118 -328
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +558 -392
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +107 -87
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +160 -281
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  131. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +148 -97
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  147. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.json +202 -307
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  156. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  157. package/artifacts/contracts/product/Product.sol/Product.json +160 -281
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -34
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  167. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  169. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  170. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +526 -245
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -106
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +474 -19
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +85 -80
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  216. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +98 -265
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  220. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  224. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  233. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  245. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  246. package/artifacts/contracts/staking/Staking.sol/Staking.json +174 -291
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +174 -128
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  296. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  299. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  303. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  306. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  307. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  308. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  309. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  310. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  311. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  312. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  313. package/contracts/authorization/AccessAdmin.sol +64 -59
  314. package/contracts/authorization/Authorization.sol +111 -40
  315. package/contracts/authorization/IAccess.sol +1 -0
  316. package/contracts/authorization/IAccessAdmin.sol +4 -3
  317. package/contracts/authorization/IAuthorization.sol +13 -7
  318. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  319. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  320. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  321. package/contracts/distribution/BasicDistribution.sol +6 -16
  322. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  323. package/contracts/distribution/Distribution.sol +28 -26
  324. package/contracts/distribution/DistributionService.sol +128 -75
  325. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  326. package/contracts/distribution/IDistributionComponent.sol +9 -5
  327. package/contracts/distribution/IDistributionService.sol +18 -2
  328. package/contracts/examples/fire/DamageLevel.sol +59 -0
  329. package/contracts/examples/fire/FirePool.sol +86 -0
  330. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  331. package/contracts/examples/fire/FireProduct.sol +431 -0
  332. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  333. package/contracts/examples/fire/FireUSD.sol +26 -0
  334. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  335. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  336. package/contracts/examples/unpermissioned/SimplePool.sol +81 -0
  337. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  338. package/contracts/instance/IInstance.sol +10 -30
  339. package/contracts/instance/IInstanceService.sol +0 -20
  340. package/contracts/instance/Instance.sol +29 -51
  341. package/contracts/instance/InstanceAdmin.sol +42 -31
  342. package/contracts/instance/InstanceAuthorizationV3.sol +13 -21
  343. package/contracts/instance/InstanceReader.sol +115 -25
  344. package/contracts/instance/InstanceService.sol +65 -97
  345. package/contracts/instance/InstanceServiceManager.sol +8 -13
  346. package/contracts/instance/InstanceStore.sol +12 -1
  347. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  348. package/contracts/instance/module/IBundle.sol +1 -1
  349. package/contracts/instance/module/IComponents.sol +11 -12
  350. package/contracts/instance/module/IDistribution.sol +0 -1
  351. package/contracts/instance/module/IPolicy.sol +24 -24
  352. package/contracts/mock/Dip.sol +1 -1
  353. package/contracts/oracle/BasicOracle.sol +0 -1
  354. package/contracts/oracle/IOracleComponent.sol +2 -1
  355. package/contracts/oracle/IOracleService.sol +2 -1
  356. package/contracts/oracle/Oracle.sol +21 -22
  357. package/contracts/oracle/OracleService.sol +56 -42
  358. package/contracts/oracle/OracleServiceManager.sol +8 -11
  359. package/contracts/pool/BasicPool.sol +38 -27
  360. package/contracts/pool/BasicPoolAuthorization.sol +22 -3
  361. package/contracts/pool/BundleService.sol +258 -69
  362. package/contracts/pool/BundleServiceManager.sol +8 -11
  363. package/contracts/pool/IBundleService.sol +44 -10
  364. package/contracts/pool/IPoolComponent.sol +20 -10
  365. package/contracts/pool/IPoolService.sol +67 -45
  366. package/contracts/pool/Pool.sol +150 -116
  367. package/contracts/pool/PoolService.sol +336 -166
  368. package/contracts/pool/PoolServiceManager.sol +6 -9
  369. package/contracts/product/ApplicationService.sol +70 -65
  370. package/contracts/product/ApplicationServiceManager.sol +6 -6
  371. package/contracts/product/BasicProduct.sol +11 -44
  372. package/contracts/product/BasicProductAuthorization.sol +2 -0
  373. package/contracts/product/ClaimService.sol +316 -146
  374. package/contracts/product/ClaimServiceManager.sol +6 -6
  375. package/contracts/product/IApplicationService.sol +1 -0
  376. package/contracts/product/IClaimService.sol +31 -7
  377. package/contracts/product/IPolicyService.sol +34 -32
  378. package/contracts/product/IPricingService.sol +10 -10
  379. package/contracts/product/IProductComponent.sol +24 -4
  380. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  381. package/contracts/product/PolicyService.sol +419 -203
  382. package/contracts/product/PolicyServiceManager.sol +6 -9
  383. package/contracts/product/PricingService.sol +54 -54
  384. package/contracts/product/PricingServiceManager.sol +5 -8
  385. package/contracts/product/Product.sol +126 -87
  386. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  387. package/contracts/product/RiskServiceManager.sol +39 -0
  388. package/contracts/registry/ChainNft.sol +68 -38
  389. package/contracts/registry/IRegistry.sol +55 -18
  390. package/contracts/registry/IRegistryService.sol +5 -12
  391. package/contracts/registry/ITransferInterceptor.sol +1 -2
  392. package/contracts/registry/Registry.sol +342 -201
  393. package/contracts/registry/RegistryAdmin.sol +134 -51
  394. package/contracts/registry/RegistryService.sol +39 -64
  395. package/contracts/registry/RegistryServiceManager.sol +4 -4
  396. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  397. package/contracts/registry/ReleaseRegistry.sol +204 -190
  398. package/contracts/registry/ServiceAuthorizationV3.sol +26 -23
  399. package/contracts/shared/Component.sol +47 -63
  400. package/contracts/shared/ComponentService.sol +314 -150
  401. package/contracts/shared/ComponentServiceManager.sol +10 -7
  402. package/contracts/shared/ComponentVerifyingService.sol +23 -16
  403. package/contracts/shared/ContractLib.sol +38 -0
  404. package/contracts/shared/IComponent.sol +10 -6
  405. package/contracts/shared/IComponentService.sol +38 -20
  406. package/contracts/shared/IInstanceLinkedComponent.sol +8 -17
  407. package/contracts/shared/ILifecycle.sol +3 -1
  408. package/contracts/shared/INftOwnable.sol +2 -0
  409. package/contracts/shared/IPolicyHolder.sol +12 -22
  410. package/contracts/shared/IRegisterable.sol +11 -0
  411. package/contracts/shared/IService.sol +1 -1
  412. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  413. package/contracts/shared/InstanceLinkedComponent.sol +85 -23
  414. package/contracts/shared/KeyValueStore.sol +1 -1
  415. package/contracts/shared/Lifecycle.sol +15 -4
  416. package/contracts/shared/NftOwnable.sol +29 -9
  417. package/contracts/shared/PolicyHolder.sol +17 -57
  418. package/contracts/shared/Registerable.sol +19 -11
  419. package/contracts/shared/RegistryLinked.sol +3 -2
  420. package/contracts/shared/Service.sol +23 -22
  421. package/contracts/shared/TokenHandler.sol +100 -19
  422. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  423. package/contracts/staking/IStaking.sol +3 -2
  424. package/contracts/staking/IStakingService.sol +0 -3
  425. package/contracts/staking/StakeManagerLib.sol +18 -25
  426. package/contracts/staking/Staking.sol +28 -42
  427. package/contracts/staking/StakingManager.sol +10 -11
  428. package/contracts/staking/StakingReader.sol +17 -13
  429. package/contracts/staking/StakingService.sol +25 -29
  430. package/contracts/staking/StakingServiceManager.sol +4 -4
  431. package/contracts/staking/StakingStore.sol +5 -15
  432. package/contracts/staking/TargetManagerLib.sol +7 -3
  433. package/contracts/type/Amount.sol +27 -5
  434. package/contracts/type/Blocknumber.sol +7 -1
  435. package/contracts/type/ClaimId.sol +6 -1
  436. package/contracts/type/NftId.sol +1 -0
  437. package/contracts/type/ObjectType.sol +16 -11
  438. package/contracts/type/PayoutId.sol +10 -10
  439. package/contracts/type/Referral.sol +1 -0
  440. package/contracts/type/RiskId.sol +16 -2
  441. package/contracts/type/RoleId.sol +0 -12
  442. package/contracts/type/Seconds.sol +21 -1
  443. package/contracts/type/StateId.sol +15 -1
  444. package/contracts/type/Timestamp.sol +11 -1
  445. package/contracts/type/UFixed.sol +33 -10
  446. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  447. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  448. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  449. package/package.json +2 -1
  450. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  451. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  452. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  453. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  454. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  455. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  456. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  457. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  458. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  459. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  460. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  461. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  462. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  463. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  464. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  465. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  466. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  467. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  468. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  469. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  470. package/contracts/product/ProductServiceManager.sol +0 -42
  471. package/contracts/shared/InitializableCustom.sol +0 -177
  472. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,45 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Pool} from "./Pool.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {IInstance} from "../instance/IInstance.sol";
7
4
  import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
8
6
  import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
9
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
-
11
- import {IVersionable} from "../shared/IVersionable.sol";
12
- import {Versionable} from "../shared/Versionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.sol";
10
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
11
+ import {IPoolService} from "./IPoolService.sol";
12
+ import {IProductComponent} from "../product/IProductComponent.sol";
13
+ import {IRegistry} from "../registry/IRegistry.sol";
14
+ import {IStaking} from "../staking/IStaking.sol";
14
15
 
15
16
  import {Amount, AmountLib} from "../type/Amount.sol";
17
+ import {ClaimId} from "../type/ClaimId.sol";
16
18
  import {Fee, FeeLib} from "../type/Fee.sol";
17
- import {NftId, NftIdLib} from "../type/NftId.sol";
18
- import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
19
- import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
19
+ import {NftId} from "../type/NftId.sol";
20
+ import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
20
21
  import {Fee, FeeLib} from "../type/Fee.sol";
21
- import {Version, VersionLib} from "../type/Version.sol";
22
- import {KEEP_STATE, StateId} from "../type/StateId.sol";
22
+ import {KEEP_STATE} from "../type/StateId.sol";
23
23
  import {Seconds} from "../type/Seconds.sol";
24
- import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
25
- import {TokenHandler} from "../shared/TokenHandler.sol";
26
24
  import {UFixed} from "../type/UFixed.sol";
27
- import {Version, VersionLib} from "../type/Version.sol";
28
-
29
- import {IService} from "../shared/IService.sol";
30
- import {Service} from "../shared/Service.sol";
31
25
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
32
- import {IBundleService} from "./IBundleService.sol";
33
- import {IComponentService} from "../shared/IComponentService.sol";
34
- import {IInstanceService} from "../instance/IInstanceService.sol";
35
- import {IPoolService} from "./IPoolService.sol";
36
- import {IRegistryService} from "../registry/IRegistryService.sol";
37
- import {IStaking} from "../staking/IStaking.sol";
38
- import {InstanceService} from "../instance/InstanceService.sol";
39
26
  import {InstanceReader} from "../instance/InstanceReader.sol";
40
27
  import {InstanceStore} from "../instance/InstanceStore.sol";
41
- import {IComponent} from "../shared/IComponent.sol";
42
- import {IPoolComponent} from "./IPoolComponent.sol";
43
28
 
44
29
  string constant POOL_SERVICE_NAME = "PoolService";
45
30
 
@@ -47,14 +32,8 @@ contract PoolService is
47
32
  ComponentVerifyingService,
48
33
  IPoolService
49
34
  {
50
- using NftIdLib for NftId;
51
- using AmountLib for Amount;
52
-
53
35
  IBundleService internal _bundleService;
54
36
  IComponentService internal _componentService;
55
- IInstanceService private _instanceService;
56
- IRegistryService private _registryService;
57
-
58
37
  IStaking private _staking;
59
38
 
60
39
  function _initialize(
@@ -62,191 +41,332 @@ contract PoolService is
62
41
  bytes memory data
63
42
  )
64
43
  internal
65
- initializer
66
44
  virtual override
45
+ initializer()
67
46
  {
68
47
  (
69
- address registryAddress,,
70
- //address managerAddress
48
+ address registryAddress,
71
49
  address authority
72
- ) = abi.decode(data, (address, address, address));
50
+ ) = abi.decode(data, (address, address));
73
51
 
74
- initializeService(registryAddress, authority, owner);
52
+ _initializeService(registryAddress, authority, owner);
75
53
 
76
- _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
77
54
  _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
78
- _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
79
55
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
80
-
81
56
  _staking = IStaking(getRegistry().getStakingAddress());
82
57
 
83
- registerInterface(type(IPoolService).interfaceId);
58
+ _registerInterface(type(IPoolService).interfaceId);
84
59
  }
85
60
 
86
61
 
87
- function setMaxCapitalAmount(Amount maxCapitalAmount)
62
+ /// @inheritdoc IPoolService
63
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
88
64
  external
89
65
  virtual
90
66
  {
91
- /*
92
67
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
93
68
  InstanceReader instanceReader = instance.getInstanceReader();
69
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
94
70
 
95
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
96
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
97
- Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
98
-
99
- poolInfo.maxCapitalAmount = maxCapitalAmount;
71
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
72
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
100
73
  instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
101
74
 
102
- emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
103
- */
75
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
104
76
  }
105
77
 
106
- function setBundleOwnerRole(RoleId bundleOwnerRole)
78
+ // TODO cleanup
79
+ // /// @inheritdoc IPoolService
80
+ // function createBundle(
81
+ // address bundleOwner, // initial bundle owner
82
+ // Fee memory fee, // fees deducted from premium that go to bundle owner
83
+ // Seconds lifetime, // initial duration for which new policies are covered
84
+ // bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
85
+ // )
86
+ // external
87
+ // virtual
88
+ // returns(NftId bundleNftId)
89
+ // {
90
+ // (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
91
+
92
+ // // create the empty bundle
93
+ // bundleNftId = _bundleService.create(
94
+ // instance,
95
+ // poolNftId,
96
+ // bundleOwner,
97
+ // fee,
98
+ // lifetime,
99
+ // filter);
100
+
101
+ // emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
102
+ // }
103
+
104
+
105
+ function closeBundle(NftId bundleNftId)
107
106
  external
108
107
  virtual
109
108
  {
109
+ _checkNftType(bundleNftId, BUNDLE());
110
+
110
111
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
111
- InstanceReader instanceReader = instance.getInstanceReader();
112
112
 
113
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
114
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
113
+ // TODO get performance fee for pool (#477)
115
114
 
116
- // bundle owner role may only be set once per pool
117
- if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
118
- revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
119
- }
115
+ // releasing collateral in bundle
116
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
120
117
 
121
- poolInfo.bundleOwnerRole = bundleOwnerRole;
122
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
118
+ _componentService.decreasePoolBalance(
119
+ instance.getInstanceStore(),
120
+ poolNftId,
121
+ unstakedAmount + feeAmount,
122
+ AmountLib.zero());
123
+
124
+ emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
123
125
 
124
- emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
126
+ if ((unstakedAmount + feeAmount).gtz()){
127
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
128
+ poolComponentInfo.tokenHandler.distributeTokens(
129
+ poolComponentInfo.wallet,
130
+ getRegistry().ownerOf(bundleNftId),
131
+ unstakedAmount + feeAmount);
132
+ }
125
133
  }
126
134
 
127
135
 
128
- function setFees(
129
- Fee memory poolFee,
130
- Fee memory stakingFee,
131
- Fee memory performanceFee
132
- )
136
+ /// @inheritdoc IPoolService
137
+ function processFundedClaim(
138
+ NftId policyNftId,
139
+ ClaimId claimId,
140
+ Amount availableAmount
141
+ )
133
142
  external
134
143
  virtual
135
144
  {
145
+ _checkNftType(policyNftId, POLICY());
146
+
136
147
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
148
+ InstanceReader instanceReader = instance.getInstanceReader();
149
+ NftId productNftId = _getProductNftId(poolNftId);
150
+
151
+ // check policy matches with calling pool
152
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
153
+ if(policyInfo.productNftId != productNftId) {
154
+ revert ErrorPoolServicePolicyPoolMismatch(
155
+ policyNftId,
156
+ policyInfo.productNftId,
157
+ productNftId);
158
+ }
137
159
 
138
- IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
139
- poolInfo.poolFee = poolFee;
140
- poolInfo.stakingFee = stakingFee;
141
- poolInfo.performanceFee = performanceFee;
160
+ emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
142
161
 
143
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
144
-
145
- // TODO add logging
162
+ // callback to product component if applicable
163
+ if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
164
+ address productAddress = getRegistry().getObjectAddress(productNftId);
165
+ IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
166
+ }
146
167
  }
147
168
 
148
- function createBundle(
149
- address bundleOwner, // initial bundle owner
150
- Fee memory fee, // fees deducted from premium that go to bundle owner
151
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
152
- Seconds lifetime, // initial duration for which new policies are covered
153
- bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
154
- )
169
+
170
+ /// @inheritdoc IPoolService
171
+ function stake(NftId bundleNftId, Amount amount)
155
172
  external
156
173
  virtual
157
- returns(NftId bundleNftId)
174
+ // TODO: restricted() (once #462 is done)
175
+ returns(Amount netAmount)
158
176
  {
177
+ _checkNftType(bundleNftId, BUNDLE());
178
+
159
179
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
160
180
  InstanceReader instanceReader = instance.getInstanceReader();
181
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
182
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
161
183
 
162
- (
163
- Amount stakingFeeAmount,
164
- Amount stakingNetAmount
165
- ) = FeeLib.calculateFee(
166
- _getStakingFee(instanceReader, poolNftId),
167
- stakingAmount);
184
+ if (bundleInfo.poolNftId != poolNftId) {
185
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
186
+ }
168
187
 
169
- bundleNftId = _bundleService.create(
170
- instance,
171
- poolNftId,
172
- bundleOwner,
173
- fee,
174
- stakingNetAmount,
175
- lifetime,
176
- filter);
188
+ {
189
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
190
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
191
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
192
+ }
193
+ }
177
194
 
178
- // pool book keeping
195
+ // calculate fees
196
+ IRegistry registry = getRegistry();
197
+ Amount feeAmount;
198
+
199
+ {
200
+ NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
201
+ Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
202
+ (
203
+ feeAmount,
204
+ netAmount
205
+ ) = FeeLib.calculateFee(
206
+ stakingFee,
207
+ amount);
208
+ }
209
+
210
+ // do all the book keeping
179
211
  _componentService.increasePoolBalance(
180
212
  instance.getInstanceStore(),
181
213
  poolNftId,
182
- stakingAmount,
183
- stakingFeeAmount);
214
+ netAmount,
215
+ feeAmount);
184
216
 
185
- // pool bookkeeping and collect tokens from bundle owner
186
- _collectStakingAmount(
187
- instanceReader,
188
- poolNftId,
189
- bundleOwner,
190
- stakingAmount);
217
+ _bundleService.stake(instance, bundleNftId, netAmount);
218
+
219
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
220
+
221
+ // only collect staking amount when pool is not externally managed
222
+ if (!poolInfo.isExternallyManaged) {
191
223
 
192
- emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
224
+ // collect tokens from bundle owner
225
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
226
+ _collectStakingAmount(
227
+ instanceReader,
228
+ poolNftId,
229
+ bundleOwner,
230
+ amount);
231
+ }
193
232
  }
194
233
 
195
- function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
196
- internal
234
+
235
+ /// @inheritdoc IPoolService
236
+ function unstake(NftId bundleNftId, Amount amount)
237
+ external
197
238
  virtual
198
- view
199
- returns (Fee memory stakingFee)
239
+ // TODO: restricted() (once #462 is done)
240
+ returns(Amount netAmount)
200
241
  {
201
- NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
202
- return instanceReader.getPoolInfo(productNftId).stakingFee;
242
+ _checkNftType(bundleNftId, BUNDLE());
243
+
244
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
245
+ InstanceReader instanceReader = instance.getInstanceReader();
246
+ InstanceStore instanceStore = instance.getInstanceStore();
247
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
248
+
249
+ if (bundleInfo.poolNftId != poolNftId) {
250
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
251
+ }
252
+
253
+ // call bundle service for bookkeeping and additional checks
254
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
255
+
256
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
257
+ // if amount was max, this was set to the available amount
258
+
259
+ // TODO: handle performance fees (issue #477)
260
+ netAmount = unstakedAmount;
261
+
262
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
263
+ _componentService.decreasePoolBalance(
264
+ instanceStore,
265
+ poolNftId,
266
+ unstakedAmount,
267
+ AmountLib.zero());
268
+
269
+
270
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount, netAmount);
271
+
272
+ // only distribute staking amount when pool is not externally managed
273
+ if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
274
+
275
+ // transfer amount to bundle owner
276
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
277
+ _distributeUnstakingAmount(
278
+ instanceReader,
279
+ poolNftId,
280
+ bundleOwner,
281
+ netAmount);
282
+ }
203
283
  }
204
284
 
205
- function closeBundle(NftId bundleNftId)
285
+
286
+ function fundPoolWallet(Amount amount)
206
287
  external
207
288
  virtual
289
+ // restricted()
208
290
  {
209
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
291
+ (
292
+ NftId poolNftId,,
293
+ IInstance instance
294
+ ) = _getAndVerifyActiveComponent(POOL());
295
+
296
+ // check that pool is externally managed
297
+ InstanceReader reader = instance.getInstanceReader();
298
+ if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
299
+ revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
300
+ }
210
301
 
211
- // TODO book keeping for pool collateral released outside of retention level
302
+ address poolOwner = getRegistry().ownerOf(poolNftId);
303
+ emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
212
304
 
213
- // releasing collateral in bundle
214
- _bundleService.close(instance, bundleNftId);
305
+ _collectStakingAmount(
306
+ reader,
307
+ poolNftId,
308
+ poolOwner,
309
+ amount);
310
+ }
215
311
 
216
- // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
217
312
 
218
- emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
313
+ function defundPoolWallet(Amount amount)
314
+ external
315
+ virtual
316
+ // restricted()
317
+ {
318
+ (
319
+ NftId poolNftId,,
320
+ IInstance instance
321
+ ) = _getAndVerifyActiveComponent(POOL());
322
+
323
+ // check that pool is externally managed
324
+ InstanceReader reader = instance.getInstanceReader();
325
+ if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
326
+ revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
327
+ }
328
+
329
+ address poolOwner = getRegistry().ownerOf(poolNftId);
330
+ emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
331
+
332
+ _distributeUnstakingAmount(
333
+ reader,
334
+ poolNftId,
335
+ poolOwner,
336
+ amount);
219
337
  }
220
338
 
221
339
 
222
340
  function processSale(
223
341
  NftId bundleNftId,
224
- IPolicy.Premium memory premium
342
+ IPolicy.PremiumInfo memory premium
225
343
  )
226
344
  external
227
345
  virtual
228
346
  restricted()
229
347
  {
348
+ _checkNftType(bundleNftId, BUNDLE());
349
+
230
350
  IRegistry registry = getRegistry();
231
- IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
232
- IRegistry.ObjectInfo memory poolObjectInfo = registry.getObjectInfo(bundleObjectInfo.parentNftId);
233
- IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
234
- IInstance instance = IInstance(instanceObjectInfo.objectAddress);
351
+ NftId poolNftId = registry.getObjectInfo(bundleNftId).parentNftId;
352
+ IInstance instance = _getInstanceForComponent(
353
+ registry,
354
+ registry.getObjectInfo(poolNftId).parentNftId);
235
355
 
236
- Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
237
- Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
238
- Amount bundleNetAmount = AmountLib.toAmount(premium.netPremiumAmount);
356
+ Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
357
+ Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
358
+ Amount bundleNetAmount = premium.netPremiumAmount;
239
359
 
240
360
  InstanceStore instanceStore = instance.getInstanceStore();
241
361
  _componentService.increasePoolBalance(
242
362
  instanceStore,
243
- poolObjectInfo.nftId,
363
+ poolNftId,
244
364
  bundleNetAmount + bundleFeeAmount,
245
365
  poolFeeAmount);
246
366
 
247
367
  _componentService.increaseBundleBalance(
248
368
  instanceStore,
249
- bundleObjectInfo.nftId,
369
+ bundleNftId,
250
370
  bundleNetAmount,
251
371
  bundleFeeAmount);
252
372
  }
@@ -264,13 +384,21 @@ contract PoolService is
264
384
  virtual
265
385
  restricted()
266
386
  returns (
267
- Amount localCollateralAmount,
268
- Amount totalCollateralAmount
387
+ Amount totalCollateralAmount,
388
+ Amount localCollateralAmount
269
389
  )
270
390
  {
391
+ _checkNftType(productNftId, PRODUCT());
392
+ _checkNftType(applicationNftId, POLICY());
393
+ _checkNftType(bundleNftId, BUNDLE());
394
+
395
+ NftId poolNftId;
396
+ bool poolIsVerifyingApplications;
271
397
  (
398
+ poolNftId,
399
+ totalCollateralAmount,
272
400
  localCollateralAmount,
273
- totalCollateralAmount
401
+ poolIsVerifyingApplications
274
402
  ) = calculateRequiredCollateral(
275
403
  instance.getInstanceReader(),
276
404
  productNftId,
@@ -289,15 +417,23 @@ contract PoolService is
289
417
  token,
290
418
  totalCollateralAmount);
291
419
 
292
- // hierarhical riskpool setup
293
- // TODO loop in with pool component to guarantee availability of external capital
294
- if(totalCollateralAmount > localCollateralAmount) {
420
+ // pool callback when required
421
+ if (poolIsVerifyingApplications) {
422
+ IPoolComponent pool = IPoolComponent(
423
+ getRegistry().getObjectAddress(poolNftId));
295
424
 
425
+ pool.verifyApplication(
426
+ applicationNftId,
427
+ bundleNftId,
428
+ totalCollateralAmount);
429
+
430
+ // TODO add logging
296
431
  }
297
- }
298
432
 
433
+ // TODO add logging
434
+ }
299
435
 
300
- function reduceCollateral(
436
+ function processPayout(
301
437
  IInstance instance,
302
438
  address token,
303
439
  NftId policyNftId,
@@ -308,6 +444,24 @@ contract PoolService is
308
444
  virtual
309
445
  restricted()
310
446
  {
447
+ _checkNftType(policyNftId, POLICY());
448
+
449
+ NftId bundleNftId = policyInfo.bundleNftId;
450
+ NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
451
+ InstanceStore instanceStore = instance.getInstanceStore();
452
+
453
+ _componentService.decreasePoolBalance(
454
+ instanceStore,
455
+ poolNftId,
456
+ payoutAmount,
457
+ AmountLib.zero());
458
+
459
+ _componentService.decreaseBundleBalance(
460
+ instanceStore,
461
+ bundleNftId,
462
+ payoutAmount,
463
+ AmountLib.zero());
464
+
311
465
  _bundleService.releaseCollateral(
312
466
  instance,
313
467
  policyNftId,
@@ -334,6 +488,8 @@ contract PoolService is
334
488
  virtual
335
489
  restricted()
336
490
  {
491
+ _checkNftType(policyNftId, POLICY());
492
+
337
493
  Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
338
494
 
339
495
  _bundleService.releaseCollateral(
@@ -362,16 +518,21 @@ contract PoolService is
362
518
  public
363
519
  view
364
520
  returns(
521
+ NftId poolNftId,
522
+ Amount totalCollateralAmount,
365
523
  Amount localCollateralAmount,
366
- Amount totalCollateralAmount
524
+ bool poolIsVerifyingApplications
367
525
  )
368
526
  {
369
- NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
527
+ _checkNftType(productNftId, PRODUCT());
528
+
529
+ poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
370
530
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
531
+ poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
371
532
 
372
533
  (
373
- localCollateralAmount,
374
- totalCollateralAmount
534
+ totalCollateralAmount,
535
+ localCollateralAmount
375
536
  ) = calculateRequiredCollateral(
376
537
  poolInfo.collateralizationLevel,
377
538
  poolInfo.retentionLevel,
@@ -387,18 +548,17 @@ contract PoolService is
387
548
  public
388
549
  pure
389
550
  returns(
390
- Amount localCollateralAmount,
391
- Amount totalCollateralAmount
551
+ Amount totalCollateralAmount,
552
+ Amount localCollateralAmount
392
553
  )
393
554
  {
394
- // TODO define if only applies to local collateral
395
- // TODO add minimalistic implementation
396
-
397
- // assumptions
398
- // - collateralizationLevel == 1.0
399
- // - retentionLevel == 1.0
400
- localCollateralAmount = sumInsuredAmount;
401
- totalCollateralAmount = localCollateralAmount;
555
+ // collateralization is applied to sum insured
556
+ UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
557
+ totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
558
+
559
+ // retention level defines how much capital is required locally
560
+ localCollateralAmount = AmountLib.toAmount(
561
+ (retentionLevel * totalUFixed).toInt());
402
562
  }
403
563
 
404
564
 
@@ -407,6 +567,7 @@ contract PoolService is
407
567
  Amount stakingAmount
408
568
  )
409
569
  internal
570
+ pure
410
571
  returns (Amount stakingNetAmount)
411
572
  {
412
573
  stakingNetAmount = stakingAmount;
@@ -421,30 +582,39 @@ contract PoolService is
421
582
  }
422
583
 
423
584
 
424
- // TODO create (I)TreasuryService that deals with all gif related token transfers
425
- /// @dev transfers the specified amount from the bundle owner to the pool's wallet
585
+ /// @dev transfers the specified amount from the "from account" to the pool's wallet
426
586
  function _collectStakingAmount(
427
- InstanceReader instanceReader,
587
+ InstanceReader reader,
428
588
  NftId poolNftId,
429
- address bundleOwner,
589
+ address from,
430
590
  Amount amount
431
591
  )
432
592
  internal
433
593
  {
594
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
595
+ info.tokenHandler.collectTokens(
596
+ from,
597
+ info.wallet,
598
+ amount);
599
+ }
434
600
 
435
- // collecting investor token
436
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
437
- TokenHandler tokenHandler = componentInfo.tokenHandler;
438
- address poolWallet = componentInfo.wallet;
439
-
440
- if(amount.gtz()) {
441
- tokenHandler.transfer(
442
- bundleOwner,
443
- poolWallet,
444
- amount);
445
- }
601
+ /// @dev distributes the specified amount from the pool's wallet to the "to account"
602
+ function _distributeUnstakingAmount(
603
+ InstanceReader reader,
604
+ NftId poolNftId,
605
+ address to,
606
+ Amount amount
607
+ )
608
+ internal
609
+ {
610
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
611
+ info.tokenHandler.distributeTokens(
612
+ info.wallet,
613
+ to,
614
+ amount);
446
615
  }
447
616
 
617
+
448
618
  function _getDomain() internal pure override returns(ObjectType) {
449
619
  return POOL();
450
620
  }