@etherisc/gif-next 0.0.2-c7609c4-545 → 0.0.2-c7ade86-552

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