@etherisc/gif-next 0.0.2-f12cf4d-104 → 0.0.2-f13fd28-503

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 (455) hide show
  1. package/README.md +23 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +82 -12
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +100 -102
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +51 -53
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +140 -110
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +46 -48
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +38 -40
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  38. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +102 -56
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +127 -40
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +260 -199
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +140 -91
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -77
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +111 -62
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +306 -161
  60. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  62. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
  64. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +75 -18
  66. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/Instance.sol/Instance.json +150 -59
  68. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +362 -99
  70. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
  72. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +549 -218
  74. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +87 -73
  76. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +20 -22
  78. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +403 -353
  80. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  82. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  84. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  85. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  87. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  89. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  91. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  92. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  93. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  98. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +68 -70
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
  103. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +38 -40
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -54
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +98 -83
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +40 -22
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  115. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -53
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +127 -40
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -310
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +33 -83
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  123. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -122
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -40
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
  128. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  129. package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -53
  130. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  131. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +241 -302
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -45
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +91 -65
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +16 -22
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -144
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -187
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +55 -65
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -55
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -131
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -181
  162. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  163. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  164. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +51 -45
  166. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingService.sol/PricingService.json +85 -78
  168. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -33
  170. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  171. package/artifacts/contracts/product/Product.sol/Product.json +157 -144
  172. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskService.sol/RiskService.json +76 -77
  174. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +25 -19
  176. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  178. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +26 -2
  180. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  181. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  182. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  183. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  184. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  185. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
  187. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +250 -221
  189. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
  191. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +11 -13
  193. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  194. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  195. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  197. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +316 -50
  199. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  201. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  203. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  204. package/artifacts/contracts/shared/Component.sol/Component.json +51 -39
  205. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +200 -472
  207. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +50 -64
  209. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  211. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +435 -5
  213. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  219. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -26
  221. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +106 -305
  223. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -40
  225. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  226. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  227. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  231. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  234. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  235. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +51 -53
  237. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  238. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  239. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  241. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  242. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  243. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  244. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  245. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  246. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  247. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  248. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  249. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  250. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  255. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  257. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  258. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +41 -29
  259. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  260. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +98 -3
  261. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  262. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -33
  263. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  264. package/artifacts/contracts/staking/Staking.sol/Staking.json +101 -60
  265. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  267. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +31 -19
  269. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  271. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +137 -51
  273. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +22 -20
  275. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  277. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  278. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  279. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  280. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  282. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  285. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  287. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  289. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  291. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  292. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  293. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  295. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  296. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  297. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  299. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  301. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  303. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  305. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  307. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  309. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  312. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  314. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  318. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  320. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  322. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  324. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  325. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  326. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
  327. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  328. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  329. package/contracts/accounting/AccountingService.sol +262 -0
  330. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  331. package/contracts/accounting/IAccountingService.sol +45 -0
  332. package/contracts/authorization/AccessAdmin.sol +177 -84
  333. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  334. package/contracts/authorization/Authorization.sol +277 -229
  335. package/contracts/authorization/IAccessAdmin.sol +13 -7
  336. package/contracts/authorization/IAuthorization.sol +15 -1
  337. package/contracts/distribution/BasicDistribution.sol +6 -6
  338. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  339. package/contracts/distribution/Distribution.sol +32 -30
  340. package/contracts/distribution/DistributionService.sol +32 -30
  341. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  342. package/contracts/distribution/IDistributionService.sol +5 -6
  343. package/contracts/examples/fire/FirePool.sol +6 -2
  344. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  345. package/contracts/examples/fire/FireProduct.sol +8 -1
  346. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  347. package/contracts/examples/unpermissioned/SimpleDistribution.sol +6 -7
  348. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  349. package/contracts/examples/unpermissioned/SimplePool.sol +7 -9
  350. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  351. package/contracts/examples/unpermissioned/SimpleProduct.sol +32 -0
  352. package/contracts/instance/BundleSet.sol +42 -38
  353. package/contracts/instance/IInstance.sol +13 -9
  354. package/contracts/instance/IInstanceService.sol +7 -6
  355. package/contracts/instance/Instance.sol +33 -18
  356. package/contracts/instance/InstanceAdmin.sol +247 -82
  357. package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
  358. package/contracts/instance/InstanceReader.sol +162 -32
  359. package/contracts/instance/InstanceService.sol +62 -72
  360. package/contracts/instance/InstanceServiceManager.sol +1 -1
  361. package/contracts/instance/InstanceStore.sol +13 -2
  362. package/contracts/instance/RiskSet.sol +118 -0
  363. package/contracts/instance/base/ObjectCounter.sol +1 -2
  364. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  365. package/contracts/instance/base/ObjectSet.sol +31 -33
  366. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  367. package/contracts/instance/module/IComponents.sol +3 -2
  368. package/contracts/instance/module/IRisk.sol +3 -0
  369. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  370. package/contracts/oracle/Oracle.sol +1 -1
  371. package/contracts/oracle/OracleService.sol +92 -74
  372. package/contracts/oracle/OracleServiceManager.sol +1 -1
  373. package/contracts/pool/BasicPoolAuthorization.sol +21 -13
  374. package/contracts/pool/BundleService.sol +35 -125
  375. package/contracts/pool/BundleServiceManager.sol +1 -1
  376. package/contracts/pool/IBundleService.sol +13 -38
  377. package/contracts/pool/IPoolService.sol +49 -56
  378. package/contracts/pool/Pool.sol +9 -9
  379. package/contracts/pool/PoolLib.sol +216 -0
  380. package/contracts/pool/PoolService.sol +323 -186
  381. package/contracts/pool/PoolServiceManager.sol +1 -1
  382. package/contracts/product/ApplicationService.sol +15 -15
  383. package/contracts/product/ApplicationServiceManager.sol +1 -1
  384. package/contracts/product/BasicProduct.sol +2 -0
  385. package/contracts/product/BasicProductAuthorization.sol +24 -10
  386. package/contracts/product/ClaimService.sol +157 -139
  387. package/contracts/product/ClaimServiceManager.sol +1 -1
  388. package/contracts/product/IApplicationService.sol +5 -2
  389. package/contracts/product/IClaimService.sol +14 -2
  390. package/contracts/product/IPolicyService.sol +23 -10
  391. package/contracts/product/IProductComponent.sol +4 -1
  392. package/contracts/product/PolicyService.sol +269 -257
  393. package/contracts/product/PolicyServiceLib.sol +65 -0
  394. package/contracts/product/PolicyServiceManager.sol +1 -1
  395. package/contracts/product/PricingService.sol +23 -19
  396. package/contracts/product/PricingServiceManager.sol +3 -3
  397. package/contracts/product/Product.sol +53 -7
  398. package/contracts/product/RiskService.sol +74 -25
  399. package/contracts/product/RiskServiceManager.sol +1 -1
  400. package/contracts/registry/ChainNft.sol +4 -2
  401. package/contracts/registry/IRegistry.sol +8 -15
  402. package/contracts/registry/IRelease.sol +26 -0
  403. package/contracts/registry/Registry.sol +7 -2
  404. package/contracts/registry/RegistryAdmin.sol +129 -237
  405. package/contracts/registry/RegistryService.sol +3 -3
  406. package/contracts/registry/RegistryServiceManager.sol +1 -1
  407. package/contracts/registry/ReleaseAdmin.sol +245 -0
  408. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  409. package/contracts/registry/ReleaseRegistry.sol +127 -101
  410. package/contracts/registry/ServiceAuthorizationV3.sol +84 -40
  411. package/contracts/registry/TokenRegistry.sol +6 -8
  412. package/contracts/shared/Component.sol +40 -42
  413. package/contracts/shared/ComponentService.sol +199 -286
  414. package/contracts/shared/ComponentServiceManager.sol +1 -1
  415. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  416. package/contracts/shared/ContractLib.sol +208 -9
  417. package/contracts/shared/IComponent.sol +3 -9
  418. package/contracts/shared/IComponentService.sol +9 -27
  419. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  420. package/contracts/shared/IRegisterable.sol +15 -4
  421. package/contracts/shared/IService.sol +3 -5
  422. package/contracts/shared/InstanceLinkedComponent.sol +3 -11
  423. package/contracts/shared/NftOwnable.sol +4 -4
  424. package/contracts/shared/PolicyHolder.sol +1 -1
  425. package/contracts/shared/Registerable.sol +45 -19
  426. package/contracts/shared/RegistryLinked.sol +1 -1
  427. package/contracts/shared/Service.sol +8 -27
  428. package/contracts/shared/TokenHandler.sol +40 -96
  429. package/contracts/staking/IStaking.sol +1 -9
  430. package/contracts/staking/IStakingService.sol +11 -1
  431. package/contracts/staking/StakeManagerLib.sol +63 -7
  432. package/contracts/staking/Staking.sol +45 -20
  433. package/contracts/staking/StakingReader.sol +1 -1
  434. package/contracts/staking/StakingService.sol +53 -57
  435. package/contracts/staking/StakingServiceManager.sol +5 -4
  436. package/contracts/type/Key32.sol +2 -2
  437. package/contracts/type/Key32Set.sol +62 -0
  438. package/contracts/type/NftId.sol +6 -0
  439. package/contracts/type/ObjectType.sol +48 -21
  440. package/contracts/type/RiskId.sol +23 -6
  441. package/contracts/type/RoleId.sol +24 -4
  442. package/contracts/type/Selector.sol +5 -0
  443. package/contracts/type/Timestamp.sol +0 -5
  444. package/contracts/type/UFixed.sol +9 -119
  445. package/contracts/type/Version.sol +15 -5
  446. package/contracts/upgradeability/ProxyManager.sol +1 -1
  447. package/package.json +1 -1
  448. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  449. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  450. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  451. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  452. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  453. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  454. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  455. package/contracts/instance/module/IAccess.sol +0 -46
@@ -1,12 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
4
5
  import {IBundle} from "../instance/module/IBundle.sol";
5
6
  import {IBundleService} from "./IBundleService.sol";
6
7
  import {IComponents} from "../instance/module/IComponents.sol";
7
8
  import {IComponentService} from "../shared/IComponentService.sol";
8
9
  import {IInstance} from "../instance/IInstance.sol";
9
10
  import {IPolicy} from "../instance/module/IPolicy.sol";
11
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
10
12
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
11
13
  import {IPoolService} from "./IPoolService.sol";
12
14
  import {IProductComponent} from "../product/IProductComponent.sol";
@@ -15,23 +17,26 @@ import {IStaking} from "../staking/IStaking.sol";
15
17
 
16
18
  import {Amount, AmountLib} from "../type/Amount.sol";
17
19
  import {ClaimId} from "../type/ClaimId.sol";
18
- import {Fee, FeeLib} from "../type/Fee.sol";
19
- import {NftId} from "../type/NftId.sol";
20
- import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
21
- import {Fee, FeeLib} from "../type/Fee.sol";
22
- import {KEEP_STATE} from "../type/StateId.sol";
23
- import {Seconds} from "../type/Seconds.sol";
24
- import {UFixed} from "../type/UFixed.sol";
25
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
20
+ import {ContractLib} from "../shared/ContractLib.sol";
26
21
  import {InstanceReader} from "../instance/InstanceReader.sol";
27
22
  import {InstanceStore} from "../instance/InstanceStore.sol";
23
+ import {KEEP_STATE} from "../type/StateId.sol";
24
+ import {NftId} from "../type/NftId.sol";
25
+ import {ObjectType, ACCOUNTING, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
26
+ import {PayoutId} from "../type/PayoutId.sol";
27
+ import {PoolLib} from "./PoolLib.sol";
28
+ import {Service} from "../shared/Service.sol";
29
+ import {TokenHandler} from "../shared/TokenHandler.sol";
30
+ import {UFixed} from "../type/UFixed.sol";
28
31
 
29
32
  string constant POOL_SERVICE_NAME = "PoolService";
30
33
 
34
+
31
35
  contract PoolService is
32
- ComponentVerifyingService,
36
+ Service,
33
37
  IPoolService
34
38
  {
39
+ IAccountingService private _accountingService;
35
40
  IBundleService internal _bundleService;
36
41
  IComponentService internal _componentService;
37
42
  IStaking private _staking;
@@ -45,12 +50,13 @@ contract PoolService is
45
50
  initializer()
46
51
  {
47
52
  (
48
- address registryAddress,
49
- address authority
53
+ address authority,
54
+ address registry
50
55
  ) = abi.decode(data, (address, address));
51
56
 
52
- _initializeService(registryAddress, authority, owner);
57
+ __Service_init(authority, registry, owner);
53
58
 
59
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
54
60
  _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
55
61
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
56
62
  _staking = IStaking(getRegistry().getStakingAddress());
@@ -64,7 +70,7 @@ contract PoolService is
64
70
  external
65
71
  virtual
66
72
  {
67
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
73
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
68
74
  InstanceReader instanceReader = instance.getInstanceReader();
69
75
  IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
70
76
 
@@ -75,32 +81,6 @@ contract PoolService is
75
81
  emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
76
82
  }
77
83
 
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
84
 
105
85
  function closeBundle(NftId bundleNftId)
106
86
  external
@@ -108,14 +88,14 @@ contract PoolService is
108
88
  {
109
89
  _checkNftType(bundleNftId, BUNDLE());
110
90
 
111
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
91
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
112
92
 
113
93
  // TODO get performance fee for pool (#477)
114
94
 
115
95
  // releasing collateral in bundle
116
96
  (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
117
97
 
118
- _componentService.decreasePoolBalance(
98
+ _accountingService.decreasePoolBalance(
119
99
  instance.getInstanceStore(),
120
100
  poolNftId,
121
101
  unstakedAmount + feeAmount,
@@ -125,8 +105,7 @@ contract PoolService is
125
105
 
126
106
  if ((unstakedAmount + feeAmount).gtz()){
127
107
  IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
128
- poolComponentInfo.tokenHandler.distributeTokens(
129
- poolComponentInfo.tokenHandler.getWallet(),
108
+ poolComponentInfo.tokenHandler.pushToken(
130
109
  getRegistry().ownerOf(bundleNftId),
131
110
  unstakedAmount + feeAmount);
132
111
  }
@@ -144,9 +123,9 @@ contract PoolService is
144
123
  {
145
124
  _checkNftType(policyNftId, POLICY());
146
125
 
147
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
126
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
148
127
  InstanceReader instanceReader = instance.getInstanceReader();
149
- NftId productNftId = _getProductNftId(poolNftId);
128
+ NftId productNftId = getRegistry().getParentNftId(poolNftId);
150
129
 
151
130
  // check policy matches with calling pool
152
131
  IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
@@ -167,23 +146,47 @@ contract PoolService is
167
146
  }
168
147
 
169
148
 
149
+ // function _checkAndGetPoolInfo(NftId bundleNftId)
150
+ // internal
151
+ // view
152
+ // returns (
153
+ // InstanceReader instanceReader,
154
+ // InstanceStore instanceStore,
155
+ // NftId instanceNftId,
156
+ // NftId poolNftId,
157
+ // IComponents.PoolInfo memory poolInfo
158
+ // )
159
+ // {
160
+ // _checkNftType(bundleNftId, BUNDLE());
161
+
162
+ // (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
163
+ // instanceReader = instance.getInstanceReader();
164
+ // instanceStore = instance.getInstanceStore();
165
+ // instanceNftId = instance.getNftId();
166
+ // poolInfo = instanceReader.getPoolInfo(poolNftId);
167
+
168
+ // if (getRegistry().getParentNftId(bundleNftId) != poolNftId) {
169
+ // revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
170
+ // }
171
+ // }
172
+
173
+
170
174
  /// @inheritdoc IPoolService
171
175
  function stake(NftId bundleNftId, Amount amount)
172
176
  external
173
177
  virtual
174
178
  // TODO: restricted() (once #462 is done)
175
- returns(Amount netAmount)
179
+ returns(
180
+ Amount netAmount
181
+ )
176
182
  {
177
- _checkNftType(bundleNftId, BUNDLE());
178
-
179
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
180
- InstanceReader instanceReader = instance.getInstanceReader();
181
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
182
- IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
183
-
184
- if (bundleInfo.poolNftId != poolNftId) {
185
- revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
186
- }
183
+ (
184
+ InstanceReader instanceReader,
185
+ InstanceStore instanceStore,
186
+ NftId instanceNftId,
187
+ NftId poolNftId,
188
+ IComponents.PoolInfo memory poolInfo
189
+ ) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
187
190
 
188
191
  {
189
192
  Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
@@ -193,37 +196,33 @@ contract PoolService is
193
196
  }
194
197
 
195
198
  // calculate fees
196
- IRegistry registry = getRegistry();
197
199
  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
- }
200
+ (
201
+ feeAmount,
202
+ netAmount
203
+ ) = PoolLib.calculateStakingAmounts(
204
+ getRegistry(),
205
+ instanceReader,
206
+ poolNftId,
207
+ amount);
209
208
 
210
209
  // do all the book keeping
211
- _componentService.increasePoolBalance(
212
- instance.getInstanceStore(),
210
+ _accountingService.increasePoolBalance(
211
+ instanceStore,
213
212
  poolNftId,
214
213
  netAmount,
215
214
  feeAmount);
216
215
 
217
- _bundleService.stake(instance, bundleNftId, netAmount);
216
+ _bundleService.stake(instanceReader, instanceStore, bundleNftId, netAmount);
218
217
 
219
- emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
218
+ emit LogPoolServiceBundleStaked(instanceNftId, poolNftId, bundleNftId, amount, netAmount);
220
219
 
221
220
  // only collect staking amount when pool is not externally managed
222
221
  if (!poolInfo.isExternallyManaged) {
223
222
 
224
223
  // collect tokens from bundle owner
225
224
  address bundleOwner = getRegistry().ownerOf(bundleNftId);
226
- _collectStakingAmount(
225
+ _pullStakingAmount(
227
226
  instanceReader,
228
227
  poolNftId,
229
228
  bundleOwner,
@@ -239,19 +238,15 @@ contract PoolService is
239
238
  // TODO: restricted() (once #462 is done)
240
239
  returns(Amount netAmount)
241
240
  {
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
- }
241
+ (
242
+ InstanceReader instanceReader,
243
+ InstanceStore instanceStore,
244
+ NftId instanceNftId,
245
+ NftId poolNftId,
246
+ ) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
252
247
 
253
248
  // call bundle service for bookkeeping and additional checks
254
- Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
249
+ Amount unstakedAmount = _bundleService.unstake(instanceStore, bundleNftId, amount);
255
250
 
256
251
  // Important: from now on work only with unstakedAmount as it is the only reliable amount.
257
252
  // if amount was max, this was set to the available amount
@@ -260,21 +255,21 @@ contract PoolService is
260
255
  netAmount = unstakedAmount;
261
256
 
262
257
  // update pool bookkeeping - performance fees stay in the pool, but as fees
263
- _componentService.decreasePoolBalance(
258
+ _accountingService.decreasePoolBalance(
264
259
  instanceStore,
265
260
  poolNftId,
266
261
  unstakedAmount,
267
262
  AmountLib.zero());
268
263
 
269
264
 
270
- emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount, netAmount);
265
+ emit LogPoolServiceBundleUnstaked(instanceNftId, poolNftId, bundleNftId, unstakedAmount, netAmount);
271
266
 
272
267
  // only distribute staking amount when pool is not externally managed
273
268
  if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
274
269
 
275
270
  // transfer amount to bundle owner
276
271
  address bundleOwner = getRegistry().ownerOf(bundleNftId);
277
- _distributeUnstakingAmount(
272
+ _pushUnstakingAmount(
278
273
  instanceReader,
279
274
  poolNftId,
280
275
  bundleOwner,
@@ -289,9 +284,9 @@ contract PoolService is
289
284
  // restricted()
290
285
  {
291
286
  (
292
- NftId poolNftId,,
287
+ NftId poolNftId,
293
288
  IInstance instance
294
- ) = _getAndVerifyActiveComponent(POOL());
289
+ ) = _getAndVerifyActivePool();
295
290
 
296
291
  // check that pool is externally managed
297
292
  InstanceReader reader = instance.getInstanceReader();
@@ -302,7 +297,7 @@ contract PoolService is
302
297
  address poolOwner = getRegistry().ownerOf(poolNftId);
303
298
  emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
304
299
 
305
- _collectStakingAmount(
300
+ _pullStakingAmount(
306
301
  reader,
307
302
  poolNftId,
308
303
  poolOwner,
@@ -316,9 +311,9 @@ contract PoolService is
316
311
  // restricted()
317
312
  {
318
313
  (
319
- NftId poolNftId,,
314
+ NftId poolNftId,
320
315
  IInstance instance
321
- ) = _getAndVerifyActiveComponent(POOL());
316
+ ) = _getAndVerifyActivePool();
322
317
 
323
318
  // check that pool is externally managed
324
319
  InstanceReader reader = instance.getInstanceReader();
@@ -329,7 +324,7 @@ contract PoolService is
329
324
  address poolOwner = getRegistry().ownerOf(poolNftId);
330
325
  emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
331
326
 
332
- _distributeUnstakingAmount(
327
+ _pushUnstakingAmount(
333
328
  reader,
334
329
  poolNftId,
335
330
  poolOwner,
@@ -348,23 +343,22 @@ contract PoolService is
348
343
  _checkNftType(bundleNftId, BUNDLE());
349
344
 
350
345
  IRegistry registry = getRegistry();
351
- NftId poolNftId = registry.getObjectInfo(bundleNftId).parentNftId;
352
- IInstance instance = _getInstanceForComponent(
353
- registry,
354
- registry.getObjectInfo(poolNftId).parentNftId);
346
+ NftId poolNftId = registry.getParentNftId(bundleNftId);
347
+ (, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
348
+ IInstance instance = IInstance(instanceAddress);
355
349
 
356
350
  Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
357
351
  Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
358
352
  Amount bundleNetAmount = premium.netPremiumAmount;
359
353
 
360
354
  InstanceStore instanceStore = instance.getInstanceStore();
361
- _componentService.increasePoolBalance(
355
+ _accountingService.increasePoolBalance(
362
356
  instanceStore,
363
357
  poolNftId,
364
358
  bundleNetAmount + bundleFeeAmount,
365
359
  poolFeeAmount);
366
360
 
367
- _componentService.increaseBundleBalance(
361
+ _accountingService.increaseBundleBalanceForPool(
368
362
  instanceStore,
369
363
  bundleNftId,
370
364
  bundleNetAmount,
@@ -399,7 +393,7 @@ contract PoolService is
399
393
  totalCollateralAmount,
400
394
  localCollateralAmount,
401
395
  poolIsVerifyingApplications
402
- ) = calculateRequiredCollateral(
396
+ ) = PoolLib.calculateRequiredCollateral(
403
397
  instance.getInstanceReader(),
404
398
  productNftId,
405
399
  sumInsuredAmount);
@@ -434,45 +428,155 @@ contract PoolService is
434
428
  }
435
429
 
436
430
  function processPayout(
437
- IInstance instance,
438
- address token,
431
+ InstanceReader instanceReader,
432
+ InstanceStore instanceStore,
433
+ NftId productNftId,
439
434
  NftId policyNftId,
440
- IPolicy.PolicyInfo memory policyInfo,
441
- Amount payoutAmount
435
+ NftId bundleNftId,
436
+ PayoutId payoutId,
437
+ Amount payoutAmount,
438
+ address payoutBeneficiary
442
439
  )
443
440
  external
444
441
  virtual
445
442
  restricted()
446
443
  {
444
+ // checks
447
445
  _checkNftType(policyNftId, POLICY());
448
446
 
449
- NftId bundleNftId = policyInfo.bundleNftId;
450
- NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
451
- InstanceStore instanceStore = instance.getInstanceStore();
447
+ // effects
448
+ NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
452
449
 
453
- _componentService.decreasePoolBalance(
450
+ _accountingService.decreasePoolBalance(
454
451
  instanceStore,
455
452
  poolNftId,
456
453
  payoutAmount,
457
454
  AmountLib.zero());
458
455
 
459
- _componentService.decreaseBundleBalance(
456
+ _accountingService.decreaseBundleBalanceForPool(
460
457
  instanceStore,
461
458
  bundleNftId,
462
459
  payoutAmount,
463
460
  AmountLib.zero());
464
461
 
465
462
  _bundleService.releaseCollateral(
466
- instance,
463
+ instanceStore,
467
464
  policyNftId,
468
- policyInfo.bundleNftId,
465
+ bundleNftId,
469
466
  payoutAmount);
470
467
 
471
468
  // update value locked with staking service
469
+ TokenHandler poolTokenHandler = TokenHandler(
470
+ instanceReader.getTokenHandler(
471
+ poolNftId));
472
+
472
473
  _staking.decreaseTotalValueLocked(
473
- instance.getNftId(),
474
- token,
474
+ instanceReader.getInstanceNftId(),
475
+ address(poolTokenHandler.TOKEN()),
475
476
  payoutAmount);
477
+
478
+ // interactions
479
+ _transferTokenAndNotifyPolicyHolder(
480
+ instanceReader,
481
+ poolTokenHandler,
482
+ productNftId,
483
+ policyNftId,
484
+ payoutId,
485
+ payoutAmount,
486
+ payoutBeneficiary);
487
+ }
488
+
489
+ function _transferTokenAndNotifyPolicyHolder(
490
+ InstanceReader instanceReader,
491
+ TokenHandler poolTokenHandler,
492
+ NftId productNftId,
493
+ NftId policyNftId,
494
+ PayoutId payoutId,
495
+ Amount payoutAmount,
496
+ address payoutBeneficiary
497
+ )
498
+ internal
499
+ {
500
+ (
501
+ Amount netPayoutAmount,
502
+ Amount processingFeeAmount,
503
+ address beneficiary
504
+ ) = PoolLib.calculatePayoutAmounts(
505
+ getRegistry(),
506
+ instanceReader,
507
+ productNftId,
508
+ policyNftId,
509
+ payoutAmount,
510
+ payoutBeneficiary);
511
+
512
+ // 1st token tx to payout to beneficiary
513
+ poolTokenHandler.pushToken(
514
+ beneficiary,
515
+ netPayoutAmount);
516
+
517
+ // 2nd token tx to transfer processing fees to product wallet
518
+ // if processingFeeAmount > 0
519
+ if (processingFeeAmount.gtz()) {
520
+ poolTokenHandler.pushToken(
521
+ instanceReader.getWallet(productNftId),
522
+ processingFeeAmount);
523
+ }
524
+
525
+ // callback to policy holder if applicable
526
+ _policyHolderPayoutExecuted(
527
+ policyNftId,
528
+ payoutId,
529
+ beneficiary,
530
+ netPayoutAmount);
531
+ }
532
+
533
+
534
+ /// @inheritdoc IPoolService
535
+ function withdrawBundleFees(
536
+ NftId bundleNftId,
537
+ Amount amount
538
+ )
539
+ public
540
+ virtual
541
+ restricted()
542
+ returns (Amount withdrawnAmount)
543
+ {
544
+ // checks
545
+ _checkNftType(bundleNftId, BUNDLE());
546
+
547
+ (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
548
+ InstanceReader reader = instance.getInstanceReader();
549
+
550
+ // determine withdrawn amount
551
+ withdrawnAmount = amount;
552
+ if (withdrawnAmount.gte(AmountLib.max())) {
553
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
554
+ } else {
555
+ if (withdrawnAmount > reader.getFeeAmount(bundleNftId)) {
556
+ revert ErrorPoolServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
557
+ }
558
+ }
559
+
560
+ // effects
561
+ // decrease fee counters by withdrawnAmount
562
+ {
563
+ InstanceStore store = instance.getInstanceStore();
564
+ // decrease fee amount of the bundle
565
+ _accountingService.decreaseBundleBalanceForPool(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
566
+ // decrease pool balance
567
+ _accountingService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
568
+ }
569
+
570
+ // interactions
571
+ // transfer amount to bundle owner
572
+ {
573
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
574
+ TokenHandler tokenHandler = reader.getTokenHandler(poolNftId);
575
+ address token = address(tokenHandler.TOKEN());
576
+ emit LogPoolServiceFeesWithdrawn(bundleNftId, bundleOwner, token, withdrawnAmount);
577
+
578
+ tokenHandler.pushToken(bundleOwner, withdrawnAmount);
579
+ }
476
580
  }
477
581
 
478
582
 
@@ -480,7 +584,6 @@ contract PoolService is
480
584
  /// may only be called by the policy service for unlocked pool components
481
585
  function releaseCollateral(
482
586
  IInstance instance,
483
- address token,
484
587
  NftId policyNftId,
485
588
  IPolicy.PolicyInfo memory policyInfo
486
589
  )
@@ -493,97 +596,97 @@ contract PoolService is
493
596
  Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
494
597
 
495
598
  _bundleService.releaseCollateral(
496
- instance,
599
+ instance.getInstanceStore(),
497
600
  policyNftId,
498
601
  policyInfo.bundleNftId,
499
602
  remainingCollateralAmount);
500
603
 
501
- _bundleService.unlinkPolicy(
502
- instance,
503
- policyNftId);
504
-
505
604
  // update value locked with staking service
605
+ InstanceReader instanceReader = instance.getInstanceReader();
506
606
  _staking.decreaseTotalValueLocked(
507
- instance.getNftId(),
508
- token,
607
+ instanceReader.getInstanceNftId(),
608
+ address(instanceReader.getToken(policyInfo.productNftId)),
509
609
  remainingCollateralAmount);
510
610
  }
511
611
 
512
612
 
513
- function calculateRequiredCollateral(
514
- InstanceReader instanceReader,
515
- NftId productNftId,
516
- Amount sumInsuredAmount
517
- )
518
- public
519
- view
520
- returns(
521
- NftId poolNftId,
522
- Amount totalCollateralAmount,
523
- Amount localCollateralAmount,
524
- bool poolIsVerifyingApplications
525
- )
526
- {
527
- _checkNftType(productNftId, PRODUCT());
613
+ // function calculateRequiredCollateral(
614
+ // InstanceReader instanceReader,
615
+ // NftId productNftId,
616
+ // Amount sumInsuredAmount
617
+ // )
618
+ // public
619
+ // view
620
+ // returns(
621
+ // NftId poolNftId,
622
+ // Amount totalCollateralAmount,
623
+ // Amount localCollateralAmount,
624
+ // bool poolIsVerifyingApplications
625
+ // )
626
+ // {
627
+ // return CollateralLib.calculateRequiredCollateral(
628
+ // instanceReader,
629
+ // productNftId,
630
+ // sumInsuredAmount);
631
+ // }
528
632
 
529
- poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
530
- IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
531
- poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
633
+ // _checkNftType(productNftId, PRODUCT());
532
634
 
533
- (
534
- totalCollateralAmount,
535
- localCollateralAmount
536
- ) = calculateRequiredCollateral(
537
- poolInfo.collateralizationLevel,
538
- poolInfo.retentionLevel,
539
- sumInsuredAmount);
540
- }
635
+ // poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
636
+ // IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
637
+ // poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
541
638
 
639
+ // (
640
+ // totalCollateralAmount,
641
+ // localCollateralAmount
642
+ // ) = calculateRequiredCollateral(
643
+ // poolInfo.collateralizationLevel,
644
+ // poolInfo.retentionLevel,
645
+ // sumInsuredAmount);
646
+ // }
542
647
 
543
- function calculateRequiredCollateral(
544
- UFixed collateralizationLevel,
545
- UFixed retentionLevel,
546
- Amount sumInsuredAmount
547
- )
548
- public
549
- pure
550
- returns(
551
- Amount totalCollateralAmount,
552
- Amount localCollateralAmount
553
- )
554
- {
555
- // collateralization is applied to sum insured
556
- UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
557
- totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
558
648
 
559
- // retention level defines how much capital is required locally
560
- localCollateralAmount = AmountLib.toAmount(
561
- (retentionLevel * totalUFixed).toInt());
562
- }
649
+ // function calculateRequiredCollateral(
650
+ // UFixed collateralizationLevel,
651
+ // UFixed retentionLevel,
652
+ // Amount sumInsuredAmount
653
+ // )
654
+ // public
655
+ // pure
656
+ // returns(
657
+ // Amount totalCollateralAmount,
658
+ // Amount localCollateralAmount
659
+ // )
660
+ // {
661
+ // // collateralization is applied to sum insured
662
+ // UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
663
+ // totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
664
+
665
+ // // retention level defines how much capital is required locally
666
+ // localCollateralAmount = AmountLib.toAmount(
667
+ // (retentionLevel * totalUFixed).toInt());
668
+ // }
669
+
563
670
 
564
671
 
565
- function _processStakingFees(
566
- Fee memory stakingFee,
567
- Amount stakingAmount
672
+
673
+ function _policyHolderPayoutExecuted(
674
+ NftId policyNftId,
675
+ PayoutId payoutId,
676
+ address beneficiary,
677
+ Amount payoutAmount
568
678
  )
569
679
  internal
570
- pure
571
- returns (Amount stakingNetAmount)
572
680
  {
573
- stakingNetAmount = stakingAmount;
574
-
575
- // check if any staking fees apply
576
- if (FeeLib.gtz(stakingFee)) {
577
- (Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
578
- stakingNetAmount = netAmount;
579
-
580
- // TODO update fee balance for pool
681
+ IPolicyHolder policyHolder = PoolLib.getPolicyHolder(getRegistry(), policyNftId);
682
+ if(address(policyHolder) != address(0)) {
683
+ policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
581
684
  }
582
685
  }
583
686
 
584
687
 
585
- /// @dev transfers the specified amount from the "from account" to the pool's wallet
586
- function _collectStakingAmount(
688
+ /// @dev Transfers the specified amount from the "from account" to the pool's wallet
689
+ function _pullStakingAmount(
587
690
  InstanceReader reader,
588
691
  NftId poolNftId,
589
692
  address from,
@@ -592,13 +695,13 @@ contract PoolService is
592
695
  internal
593
696
  {
594
697
  IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
595
- info.tokenHandler.collectTokens(
698
+ info.tokenHandler.pullToken(
596
699
  from,
597
700
  amount);
598
701
  }
599
702
 
600
- /// @dev distributes the specified amount from the pool's wallet to the "to account"
601
- function _distributeUnstakingAmount(
703
+ /// @dev Transfers the specified amount from the pool's wallet to the "to account"
704
+ function _pushUnstakingAmount(
602
705
  InstanceReader reader,
603
706
  NftId poolNftId,
604
707
  address to,
@@ -607,13 +710,47 @@ contract PoolService is
607
710
  internal
608
711
  {
609
712
  IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
610
- info.tokenHandler.distributeTokens(
611
- info.tokenHandler.getWallet(),
713
+ info.tokenHandler.pushToken(
612
714
  to,
613
715
  amount);
614
716
  }
615
717
 
616
718
 
719
+ function _getAndVerifyActivePool()
720
+ internal
721
+ virtual
722
+ view
723
+ returns (
724
+ NftId poolNftId,
725
+ IInstance instance
726
+ )
727
+ {
728
+ return PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
729
+ }
730
+
731
+ // function _getAndVerifyActivePool()
732
+ // internal
733
+ // virtual
734
+ // view
735
+ // returns (
736
+ // NftId poolNftId,
737
+ // IInstance instance
738
+ // )
739
+ // {
740
+ // (
741
+ // IRegistry.ObjectInfo memory info,
742
+ // address instanceAddress
743
+ // ) = ContractLib.getAndVerifyComponent(
744
+ // getRegistry(),
745
+ // msg.sender,
746
+ // POOL(),
747
+ // true); // only active pools
748
+
749
+ // poolNftId = info.nftId;
750
+ // instance = IInstance(instanceAddress);
751
+ // }
752
+
753
+
617
754
  function _getDomain() internal pure override returns(ObjectType) {
618
755
  return POOL();
619
756
  }