@etherisc/gif-next 0.0.2-f9b0591-801 → 0.0.2-fa35bce-363

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