@etherisc/gif-next 0.0.2-fbe6493-116 → 0.0.2-fc0563c-260

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