@etherisc/gif-next 0.0.2-e876b87-961 → 0.0.2-e8a628e-326

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