@etherisc/gif-next 0.0.2-e026265-044 → 0.0.2-e04dbfc-031

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