@etherisc/gif-next 0.0.2-db1e1e4-828 → 0.0.2-db7f30b-255

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 (676) hide show
  1. package/README.md +51 -5
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1394 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  25. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +272 -553
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1455 -0
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +838 -0
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  31. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +252 -292
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +207 -336
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1530 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2064 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1463 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1223 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1584 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2087 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +313 -2006
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +178 -109
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +403 -2855
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1653 -0
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1078 -309
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +240 -424
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +140 -159
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3678 -0
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  91. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  92. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  93. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  94. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1031 -0
  95. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  96. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  97. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  99. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  100. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +231 -273
  101. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  102. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → oracle/IOracleService.sol/IOracleService.json} +281 -231
  103. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  104. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +907 -0
  105. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
  107. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
  109. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  110. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +337 -414
  111. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  113. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1465 -0
  115. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +834 -0
  117. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  118. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → pool/IBundleService.sol/IBundleService.json} +420 -304
  119. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +960 -0
  121. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  122. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1283 -0
  123. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  124. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +411 -377
  125. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1625 -0
  127. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +766 -0
  129. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +771 -0
  131. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +710 -0
  133. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  134. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +423 -417
  135. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  136. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  137. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  138. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1431 -0
  139. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +838 -0
  141. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  142. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +91 -167
  143. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  144. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  145. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  146. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +925 -0
  147. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IPricingService.sol/IPricingService.json} +201 -229
  149. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1012 -0
  151. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  152. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +41 -62
  153. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1302 -0
  155. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  157. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.json +907 -0
  159. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +762 -0
  161. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  162. package/artifacts/contracts/product/Product.sol/Product.json +1131 -0
  163. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  165. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  167. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +435 -29
  171. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +263 -110
  173. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  175. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/Registry.sol/Registry.json +865 -68
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
  179. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +333 -245
  181. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +138 -95
  183. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  185. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  187. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  189. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  191. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  192. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +314 -196
  193. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1785 -0
  195. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +4 -0
  196. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +206 -0
  197. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +810 -0
  199. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  200. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +124 -125
  201. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  202. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  203. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  204. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +142 -115
  205. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  206. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1360 -0
  207. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  208. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +723 -0
  209. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  210. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  211. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  212. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  213. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  214. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -10
  215. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  217. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +28 -6
  219. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  221. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IService.sol/IService.json +46 -6
  223. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  224. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  225. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  226. package/artifacts/contracts/{components/Component.sol/Component.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +239 -252
  227. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  228. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  230. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  231. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  232. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  233. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +28 -70
  235. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  236. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  237. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  238. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +69 -99
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  240. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  241. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Service.sol/Service.json +58 -112
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +424 -9
  245. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  246. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  247. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  248. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
  249. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  250. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  251. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  252. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  253. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  254. package/artifacts/contracts/staking/Staking.sol/Staking.json +1880 -0
  255. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  256. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  257. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  258. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +772 -0
  259. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  260. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  261. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  262. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1249 -0
  263. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  264. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +710 -0
  265. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  266. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  267. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  268. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  269. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  270. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  271. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  272. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  273. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  274. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  278. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  280. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  282. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  283. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  285. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  286. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  287. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  288. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  289. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  291. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  293. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  294. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  295. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  296. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  297. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  298. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  299. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  300. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  301. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  304. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  305. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  306. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  307. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  308. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  309. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  310. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  311. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  312. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  313. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  315. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  316. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  317. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  319. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  320. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  324. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  325. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  326. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  327. package/contracts/authorization/AccessAdmin.sol +596 -0
  328. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  329. package/contracts/authorization/Authorization.sol +289 -0
  330. package/contracts/authorization/IAccess.sol +49 -0
  331. package/contracts/authorization/IAccessAdmin.sol +137 -0
  332. package/contracts/authorization/IAuthorization.sol +60 -0
  333. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  334. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  335. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  336. package/contracts/distribution/BasicDistribution.sol +139 -0
  337. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  338. package/contracts/{components → distribution}/Distribution.sol +170 -165
  339. package/contracts/distribution/DistributionService.sol +355 -0
  340. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  341. package/contracts/distribution/IDistributionComponent.sol +52 -0
  342. package/contracts/{instance/service → distribution}/IDistributionService.sol +40 -38
  343. package/contracts/examples/fire/DamageLevel.sol +59 -0
  344. package/contracts/examples/fire/FirePool.sol +73 -0
  345. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  346. package/contracts/examples/fire/FireProduct.sol +415 -0
  347. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  348. package/contracts/examples/fire/FireUSD.sol +26 -0
  349. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  350. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  351. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  352. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  353. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  354. package/contracts/instance/IInstance.sol +41 -73
  355. package/contracts/instance/IInstanceService.sol +37 -37
  356. package/contracts/instance/Instance.sol +153 -249
  357. package/contracts/instance/InstanceAdmin.sol +279 -0
  358. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  359. package/contracts/instance/InstanceReader.sol +264 -60
  360. package/contracts/instance/InstanceService.sol +261 -343
  361. package/contracts/instance/InstanceServiceManager.sol +14 -29
  362. package/contracts/instance/InstanceStore.sol +287 -0
  363. package/contracts/instance/base/BalanceStore.sol +123 -0
  364. package/contracts/instance/base/Cloneable.sol +28 -0
  365. package/contracts/instance/base/ObjectCounter.sol +21 -0
  366. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  367. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  368. package/contracts/instance/module/IAccess.sol +4 -12
  369. package/contracts/instance/module/IBundle.sol +6 -9
  370. package/contracts/instance/module/IComponents.sol +26 -16
  371. package/contracts/instance/module/IDistribution.sol +6 -6
  372. package/contracts/instance/module/IPolicy.sol +47 -35
  373. package/contracts/instance/module/IRisk.sol +1 -1
  374. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  375. package/contracts/oracle/BasicOracle.sol +47 -0
  376. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  377. package/contracts/oracle/IOracle.sol +36 -0
  378. package/contracts/oracle/IOracleComponent.sol +33 -0
  379. package/contracts/oracle/IOracleService.sol +66 -0
  380. package/contracts/oracle/Oracle.sol +156 -0
  381. package/contracts/oracle/OracleService.sol +291 -0
  382. package/contracts/oracle/OracleServiceManager.sol +39 -0
  383. package/contracts/pool/BasicPool.sol +154 -0
  384. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  385. package/contracts/pool/BundleService.sol +493 -0
  386. package/contracts/pool/BundleServiceManager.sol +39 -0
  387. package/contracts/pool/IBundleService.sol +143 -0
  388. package/contracts/pool/IPoolComponent.sol +68 -0
  389. package/contracts/pool/IPoolService.sol +167 -0
  390. package/contracts/pool/Pool.sol +335 -0
  391. package/contracts/pool/PoolService.sol +544 -0
  392. package/contracts/pool/PoolServiceManager.sol +39 -0
  393. package/contracts/product/ApplicationService.sol +259 -0
  394. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  395. package/contracts/product/BasicProduct.sol +53 -0
  396. package/contracts/product/BasicProductAuthorization.sol +42 -0
  397. package/contracts/product/ClaimService.sol +612 -0
  398. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  399. package/contracts/{instance/service → product}/IApplicationService.sol +16 -35
  400. package/contracts/product/IClaimService.sol +123 -0
  401. package/contracts/product/IPolicyService.sol +80 -0
  402. package/contracts/product/IPricingService.sol +39 -0
  403. package/contracts/product/IProductComponent.sol +59 -0
  404. package/contracts/product/IRiskService.sol +33 -0
  405. package/contracts/product/PolicyService.sol +691 -0
  406. package/contracts/product/PolicyServiceManager.sol +39 -0
  407. package/contracts/product/PricingService.sol +300 -0
  408. package/contracts/product/PricingServiceManager.sol +39 -0
  409. package/contracts/product/Product.sol +455 -0
  410. package/contracts/product/RiskService.sol +96 -0
  411. package/contracts/product/RiskServiceManager.sol +39 -0
  412. package/contracts/registry/ChainNft.sol +75 -38
  413. package/contracts/registry/IRegistry.sol +96 -26
  414. package/contracts/registry/IRegistryService.sol +34 -40
  415. package/contracts/registry/ITransferInterceptor.sol +1 -2
  416. package/contracts/registry/Registry.sol +445 -195
  417. package/contracts/registry/RegistryAdmin.sol +448 -0
  418. package/contracts/registry/RegistryService.sol +87 -128
  419. package/contracts/registry/RegistryServiceManager.sol +23 -32
  420. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  421. package/contracts/registry/ReleaseRegistry.sol +501 -0
  422. package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
  423. package/contracts/registry/TokenRegistry.sol +261 -62
  424. package/contracts/shared/Component.sol +259 -0
  425. package/contracts/shared/ComponentService.sol +686 -0
  426. package/contracts/shared/ComponentServiceHelperLib.sol +118 -0
  427. package/contracts/shared/ComponentServiceManager.sol +38 -0
  428. package/contracts/shared/ComponentVerifyingService.sol +126 -0
  429. package/contracts/shared/ContractLib.sol +38 -0
  430. package/contracts/shared/IComponent.sol +74 -0
  431. package/contracts/shared/IComponentService.sol +121 -0
  432. package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
  433. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  434. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  435. package/contracts/shared/INftOwnable.sol +4 -2
  436. package/contracts/shared/IPolicyHolder.sol +23 -14
  437. package/contracts/shared/IRegisterable.sol +11 -0
  438. package/contracts/shared/IRegistryLinked.sol +0 -1
  439. package/contracts/shared/IService.sol +12 -3
  440. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  441. package/contracts/shared/InstanceLinkedComponent.sol +213 -0
  442. package/contracts/shared/KeyValueStore.sol +131 -0
  443. package/contracts/shared/Lifecycle.sol +88 -0
  444. package/contracts/shared/NftIdSet.sol +65 -0
  445. package/contracts/shared/NftOwnable.sol +32 -25
  446. package/contracts/shared/PolicyHolder.sol +22 -41
  447. package/contracts/shared/Registerable.sol +32 -21
  448. package/contracts/shared/RegistryLinked.sol +3 -7
  449. package/contracts/shared/Service.sol +48 -36
  450. package/contracts/shared/TokenHandler.sol +155 -8
  451. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  452. package/contracts/staking/IStaking.sol +168 -0
  453. package/contracts/staking/IStakingService.sol +157 -0
  454. package/contracts/staking/StakeManagerLib.sol +224 -0
  455. package/contracts/staking/Staking.sol +497 -0
  456. package/contracts/staking/StakingLifecycle.sol +23 -0
  457. package/contracts/staking/StakingManager.sol +52 -0
  458. package/contracts/staking/StakingReader.sol +190 -0
  459. package/contracts/staking/StakingService.sol +407 -0
  460. package/contracts/staking/StakingServiceManager.sol +44 -0
  461. package/contracts/staking/StakingStore.sol +605 -0
  462. package/contracts/staking/TargetManagerLib.sol +211 -0
  463. package/contracts/{types → type}/AddressSet.sol +1 -1
  464. package/contracts/type/Amount.sol +150 -0
  465. package/contracts/{types → type}/Blocknumber.sol +26 -3
  466. package/contracts/{types → type}/ClaimId.sol +31 -3
  467. package/contracts/{types → type}/Fee.sol +24 -22
  468. package/contracts/{types → type}/NftId.sol +15 -16
  469. package/contracts/{types → type}/NftIdSet.sol +2 -2
  470. package/contracts/type/ObjectType.sol +276 -0
  471. package/contracts/type/PayoutId.sol +82 -0
  472. package/contracts/{types → type}/Referral.sol +2 -1
  473. package/contracts/type/RequestId.sol +75 -0
  474. package/contracts/{types → type}/RiskId.sol +16 -2
  475. package/contracts/type/RoleId.sol +162 -0
  476. package/contracts/type/Seconds.sol +101 -0
  477. package/contracts/type/Selector.sol +102 -0
  478. package/contracts/{types → type}/StateId.sol +47 -4
  479. package/contracts/type/String.sol +53 -0
  480. package/contracts/{types → type}/Timestamp.sol +21 -2
  481. package/contracts/{types → type}/UFixed.sol +38 -9
  482. package/contracts/{types → type}/Version.sol +4 -2
  483. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  484. package/contracts/{shared → upgradeability}/ProxyManager.sol +93 -30
  485. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  486. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  487. package/package.json +9 -5
  488. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  489. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  490. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  491. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  492. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  493. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  494. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  495. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  496. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  497. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  498. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  499. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  500. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  501. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  502. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  503. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  504. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  505. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  506. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  507. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  508. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  509. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  510. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  511. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  512. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  513. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  514. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  515. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  517. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  519. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  520. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  521. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  522. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  523. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  524. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  525. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  526. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  527. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  528. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  529. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  531. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  540. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  542. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  544. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  546. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  548. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  550. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  551. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  552. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  553. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  554. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  555. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  556. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  558. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  559. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  560. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  561. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  562. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  563. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  564. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  566. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  568. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  570. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  572. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  574. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  576. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  577. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  578. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  579. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  580. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  581. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  582. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  584. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  586. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  588. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  590. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  592. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  594. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  595. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  596. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  598. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  599. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  600. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  602. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  604. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  606. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  608. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  610. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  612. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  614. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  616. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  618. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  620. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  622. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  624. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  626. package/contracts/components/Component.sol +0 -253
  627. package/contracts/components/IComponent.sol +0 -76
  628. package/contracts/components/IDistributionComponent.sol +0 -71
  629. package/contracts/components/IPoolComponent.sol +0 -113
  630. package/contracts/components/IProductComponent.sol +0 -40
  631. package/contracts/components/Pool.sol +0 -303
  632. package/contracts/components/Product.sol +0 -293
  633. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  634. package/contracts/instance/Cloneable.sol +0 -51
  635. package/contracts/instance/InstanceAccessManager.sol +0 -527
  636. package/contracts/instance/base/ComponentService.sol +0 -121
  637. package/contracts/instance/base/KeyValueStore.sol +0 -180
  638. package/contracts/instance/base/Lifecycle.sol +0 -109
  639. package/contracts/instance/module/ISetup.sol +0 -33
  640. package/contracts/instance/module/ITreasury.sol +0 -23
  641. package/contracts/instance/service/ApplicationService.sol +0 -350
  642. package/contracts/instance/service/BundleService.sol +0 -431
  643. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  644. package/contracts/instance/service/ClaimService.sol +0 -151
  645. package/contracts/instance/service/DistributionService.sol +0 -435
  646. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  647. package/contracts/instance/service/IBundleService.sol +0 -93
  648. package/contracts/instance/service/IClaimService.sol +0 -61
  649. package/contracts/instance/service/IPolicyService.sol +0 -72
  650. package/contracts/instance/service/IPoolService.sol +0 -99
  651. package/contracts/instance/service/IProductService.sol +0 -40
  652. package/contracts/instance/service/PolicyService.sol +0 -362
  653. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  654. package/contracts/instance/service/PoolService.sol +0 -303
  655. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  656. package/contracts/instance/service/ProductService.sol +0 -210
  657. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  658. package/contracts/registry/RegistryAccessManager.sol +0 -216
  659. package/contracts/registry/ReleaseManager.sol +0 -324
  660. package/contracts/shared/ContractDeployerLib.sol +0 -72
  661. package/contracts/test/TestFee.sol +0 -25
  662. package/contracts/test/TestRegisterable.sol +0 -18
  663. package/contracts/test/TestRoleId.sol +0 -14
  664. package/contracts/test/TestService.sol +0 -25
  665. package/contracts/test/TestToken.sol +0 -26
  666. package/contracts/test/TestVersion.sol +0 -44
  667. package/contracts/test/TestVersionable.sol +0 -17
  668. package/contracts/types/Amount.sol +0 -60
  669. package/contracts/types/ChainId.sol +0 -38
  670. package/contracts/types/NumberId.sol +0 -52
  671. package/contracts/types/ObjectType.sol +0 -157
  672. package/contracts/types/PayoutId.sol +0 -54
  673. package/contracts/types/RoleId.sol +0 -97
  674. package/contracts/types/Seconds.sol +0 -54
  675. /package/contracts/{types → type}/DistributorType.sol +0 -0
  676. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,544 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
+ import {IPolicy} from "../instance/module/IPolicy.sol";
10
+ import {IProductComponent} from "../product/IProductComponent.sol";
11
+ import {IPoolService} from "./IPoolService.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+ import {IStaking} from "../staking/IStaking.sol";
14
+
15
+ import {Amount, AmountLib} from "../type/Amount.sol";
16
+ import {ClaimId} from "../type/ClaimId.sol";
17
+ import {Fee, FeeLib} from "../type/Fee.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
20
+ import {Fee, FeeLib} from "../type/Fee.sol";
21
+ import {KEEP_STATE} from "../type/StateId.sol";
22
+ import {Seconds} from "../type/Seconds.sol";
23
+ import {UFixed} from "../type/UFixed.sol";
24
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
25
+ import {InstanceReader} from "../instance/InstanceReader.sol";
26
+ import {InstanceStore} from "../instance/InstanceStore.sol";
27
+
28
+ string constant POOL_SERVICE_NAME = "PoolService";
29
+
30
+ contract PoolService is
31
+ ComponentVerifyingService,
32
+ IPoolService
33
+ {
34
+ IBundleService internal _bundleService;
35
+ IComponentService internal _componentService;
36
+ IStaking private _staking;
37
+
38
+ function _initialize(
39
+ address owner,
40
+ bytes memory data
41
+ )
42
+ internal
43
+ virtual override
44
+ initializer()
45
+ {
46
+ (
47
+ address registryAddress,
48
+ address authority
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ _initializeService(registryAddress, authority, owner);
52
+
53
+ _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
54
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
55
+ _staking = IStaking(getRegistry().getStakingAddress());
56
+
57
+ _registerInterface(type(IPoolService).interfaceId);
58
+ }
59
+
60
+
61
+ /// @inheritdoc IPoolService
62
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
63
+ external
64
+ virtual
65
+ {
66
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
67
+ InstanceReader instanceReader = instance.getInstanceReader();
68
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
69
+
70
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
71
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
72
+ instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
73
+
74
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
75
+ }
76
+
77
+
78
+ /// @inheritdoc IPoolService
79
+ function createBundle(
80
+ address bundleOwner, // initial bundle owner
81
+ Fee memory fee, // fees deducted from premium that go to bundle owner
82
+ Seconds lifetime, // initial duration for which new policies are covered
83
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
84
+ )
85
+ external
86
+ virtual
87
+ returns(NftId bundleNftId)
88
+ {
89
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
90
+
91
+ // create the empty bundle
92
+ bundleNftId = _bundleService.create(
93
+ instance,
94
+ poolNftId,
95
+ bundleOwner,
96
+ fee,
97
+ AmountLib.zero(),
98
+ lifetime,
99
+ filter);
100
+
101
+ emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
102
+ }
103
+
104
+
105
+ function closeBundle(NftId bundleNftId)
106
+ external
107
+ virtual
108
+ {
109
+ _checkNftType(bundleNftId, BUNDLE());
110
+
111
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
112
+
113
+ // TODO get performance fee for pool (#477)
114
+
115
+ // releasing collateral in bundle
116
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
117
+
118
+ _componentService.decreasePoolBalance(
119
+ instance.getInstanceStore(),
120
+ poolNftId,
121
+ unstakedAmount + feeAmount,
122
+ AmountLib.zero());
123
+
124
+ emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
125
+
126
+ if ((unstakedAmount + feeAmount).gtz()){
127
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
128
+ poolComponentInfo.tokenHandler.distributeTokens(
129
+ poolComponentInfo.wallet,
130
+ getRegistry().ownerOf(bundleNftId),
131
+ unstakedAmount + feeAmount);
132
+ }
133
+ }
134
+
135
+
136
+ /// @inheritdoc IPoolService
137
+ function processFundedClaim(
138
+ NftId policyNftId,
139
+ ClaimId claimId,
140
+ Amount availableAmount
141
+ )
142
+ external
143
+ virtual
144
+ {
145
+ _checkNftType(policyNftId, POLICY());
146
+
147
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
148
+ InstanceReader instanceReader = instance.getInstanceReader();
149
+ NftId productNftId = _getProductNftId(poolNftId);
150
+
151
+ // check policy matches with calling pool
152
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
153
+ if(policyInfo.productNftId != productNftId) {
154
+ revert ErrorPoolServicePolicyPoolMismatch(
155
+ policyNftId,
156
+ policyInfo.productNftId,
157
+ productNftId);
158
+ }
159
+
160
+ emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
161
+
162
+ // callback to product component if applicable
163
+ if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
164
+ address productAddress = getRegistry().getObjectAddress(productNftId);
165
+ IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
166
+ }
167
+ }
168
+
169
+
170
+ /// @inheritdoc IPoolService
171
+ function stake(NftId bundleNftId, Amount amount)
172
+ external
173
+ virtual
174
+ // TODO: restricted() (once #462 is done)
175
+ returns(Amount netAmount)
176
+ {
177
+ _checkNftType(bundleNftId, BUNDLE());
178
+
179
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
180
+ InstanceReader instanceReader = instance.getInstanceReader();
181
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
182
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
183
+
184
+ if (bundleInfo.poolNftId != poolNftId) {
185
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
186
+ }
187
+
188
+ {
189
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
190
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
191
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
192
+ }
193
+ }
194
+
195
+ // calculate fees
196
+ IRegistry registry = getRegistry();
197
+ Amount feeAmount;
198
+
199
+ {
200
+ NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
201
+ Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
202
+ (
203
+ feeAmount,
204
+ netAmount
205
+ ) = FeeLib.calculateFee(
206
+ stakingFee,
207
+ amount);
208
+ }
209
+
210
+ // do all the bookkeeping
211
+ _componentService.increasePoolBalance(
212
+ instance.getInstanceStore(),
213
+ poolNftId,
214
+ netAmount,
215
+ feeAmount);
216
+
217
+ _bundleService.stake(instance, bundleNftId, netAmount);
218
+
219
+ // collect tokens from bundle owner
220
+ address bundleOwner = registry.ownerOf(bundleNftId);
221
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
222
+
223
+ // TODO only collect staking token when pool is not externally managed
224
+ _collectStakingAmount(
225
+ instanceReader,
226
+ poolNftId,
227
+ bundleOwner,
228
+ amount);
229
+ }
230
+
231
+ /// @inheritdoc IPoolService
232
+ function unstake(NftId bundleNftId, Amount amount)
233
+ external
234
+ virtual
235
+ // TODO: restricted() (once #462 is done)
236
+ returns(Amount netAmount)
237
+ {
238
+ _checkNftType(bundleNftId, BUNDLE());
239
+
240
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
241
+ InstanceReader instanceReader = instance.getInstanceReader();
242
+ InstanceStore instanceStore = instance.getInstanceStore();
243
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
244
+
245
+ if (bundleInfo.poolNftId != poolNftId) {
246
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
247
+ }
248
+
249
+ // call bundle service for bookkeeping and additional checks
250
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
251
+
252
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
253
+ // if amount was max, this was set to the available amount
254
+
255
+ // TODO: handle performance fees (issue #477)
256
+
257
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
258
+ _componentService.decreasePoolBalance(
259
+ instanceStore,
260
+ poolNftId,
261
+ unstakedAmount,
262
+ AmountLib.zero());
263
+
264
+ IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
265
+
266
+ // transfer amount to bundle owner
267
+ address owner = getRegistry().ownerOf(bundleNftId);
268
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
269
+ poolComponentInfo.tokenHandler.distributeTokens(
270
+ poolComponentInfo.wallet,
271
+ owner,
272
+ unstakedAmount);
273
+
274
+ return unstakedAmount;
275
+ }
276
+
277
+
278
+ function fundPoolWallet(NftId poolNftId, Amount amount)
279
+ external
280
+ virtual
281
+ restricted()
282
+ {
283
+ _checkNftType(poolNftId, POOL());
284
+ // TODO check that poolNftId is externally managed
285
+ // TODO implement
286
+ }
287
+
288
+
289
+ function defundPoolWallet(NftId poolNftId, Amount amount)
290
+ external
291
+ virtual
292
+ restricted()
293
+ {
294
+ _checkNftType(poolNftId, POOL());
295
+
296
+ // TODO check that poolNftId is externally managed
297
+ // TODO implement
298
+ }
299
+
300
+ function processSale(
301
+ NftId bundleNftId,
302
+ IPolicy.PremiumInfo memory premium
303
+ )
304
+ external
305
+ virtual
306
+ restricted()
307
+ {
308
+ _checkNftType(bundleNftId, BUNDLE());
309
+
310
+ IRegistry registry = getRegistry();
311
+ IRegistry.ObjectInfo memory bundleInfo = registry.getObjectInfo(bundleNftId);
312
+ IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(bundleInfo.parentNftId);
313
+ IInstance instance = _getInstanceForComponent(registry, poolInfo);
314
+
315
+ Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
316
+ Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
317
+ Amount bundleNetAmount = premium.netPremiumAmount;
318
+
319
+ InstanceStore instanceStore = instance.getInstanceStore();
320
+ _componentService.increasePoolBalance(
321
+ instanceStore,
322
+ poolInfo.nftId,
323
+ bundleNetAmount + bundleFeeAmount,
324
+ poolFeeAmount);
325
+
326
+ _componentService.increaseBundleBalance(
327
+ instanceStore,
328
+ bundleInfo.nftId,
329
+ bundleNetAmount,
330
+ bundleFeeAmount);
331
+ }
332
+
333
+
334
+ function lockCollateral(
335
+ IInstance instance,
336
+ address token,
337
+ NftId productNftId,
338
+ NftId applicationNftId,
339
+ NftId bundleNftId,
340
+ Amount sumInsuredAmount // premium amount after product and distribution fees
341
+ )
342
+ external
343
+ virtual
344
+ restricted()
345
+ returns (
346
+ Amount totalCollateralAmount,
347
+ Amount localCollateralAmount
348
+ )
349
+ {
350
+ _checkNftType(productNftId, PRODUCT());
351
+ _checkNftType(applicationNftId, POLICY());
352
+ _checkNftType(bundleNftId, BUNDLE());
353
+
354
+ (
355
+ totalCollateralAmount,
356
+ localCollateralAmount
357
+ ) = calculateRequiredCollateral(
358
+ instance.getInstanceReader(),
359
+ productNftId,
360
+ sumInsuredAmount);
361
+
362
+ // lock collateral amount from involved bundle
363
+ _bundleService.lockCollateral(
364
+ instance,
365
+ applicationNftId,
366
+ bundleNftId,
367
+ localCollateralAmount);
368
+
369
+ // update value locked with staking service
370
+ _staking.increaseTotalValueLocked(
371
+ instance.getNftId(),
372
+ token,
373
+ totalCollateralAmount);
374
+ }
375
+
376
+ function processPayout(
377
+ IInstance instance,
378
+ address token,
379
+ NftId policyNftId,
380
+ IPolicy.PolicyInfo memory policyInfo,
381
+ Amount payoutAmount
382
+ )
383
+ external
384
+ virtual
385
+ restricted()
386
+ {
387
+ _checkNftType(policyNftId, POLICY());
388
+
389
+ NftId bundleNftId = policyInfo.bundleNftId;
390
+ NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
391
+ InstanceStore instanceStore = instance.getInstanceStore();
392
+
393
+ _componentService.decreasePoolBalance(
394
+ instanceStore,
395
+ poolNftId,
396
+ payoutAmount,
397
+ AmountLib.zero());
398
+
399
+ _componentService.decreaseBundleBalance(
400
+ instanceStore,
401
+ bundleNftId,
402
+ payoutAmount,
403
+ AmountLib.zero());
404
+
405
+ _bundleService.releaseCollateral(
406
+ instance,
407
+ policyNftId,
408
+ policyInfo.bundleNftId,
409
+ payoutAmount);
410
+
411
+ // update value locked with staking service
412
+ _staking.decreaseTotalValueLocked(
413
+ instance.getNftId(),
414
+ token,
415
+ payoutAmount);
416
+ }
417
+
418
+
419
+ /// @dev releases the remaining collateral linked to the specified policy
420
+ /// may only be called by the policy service for unlocked pool components
421
+ function releaseCollateral(
422
+ IInstance instance,
423
+ address token,
424
+ NftId policyNftId,
425
+ IPolicy.PolicyInfo memory policyInfo
426
+ )
427
+ external
428
+ virtual
429
+ restricted()
430
+ {
431
+ _checkNftType(policyNftId, POLICY());
432
+
433
+ Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
434
+
435
+ _bundleService.releaseCollateral(
436
+ instance,
437
+ policyNftId,
438
+ policyInfo.bundleNftId,
439
+ remainingCollateralAmount);
440
+
441
+ _bundleService.unlinkPolicy(
442
+ instance,
443
+ policyNftId);
444
+
445
+ // update value locked with staking service
446
+ _staking.decreaseTotalValueLocked(
447
+ instance.getNftId(),
448
+ token,
449
+ remainingCollateralAmount);
450
+ }
451
+
452
+
453
+ function calculateRequiredCollateral(
454
+ InstanceReader instanceReader,
455
+ NftId productNftId,
456
+ Amount sumInsuredAmount
457
+ )
458
+ public
459
+ view
460
+ returns(
461
+ Amount totalCollateralAmount,
462
+ Amount localCollateralAmount
463
+ )
464
+ {
465
+ _checkNftType(productNftId, PRODUCT());
466
+
467
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
468
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
469
+
470
+ (
471
+ totalCollateralAmount,
472
+ localCollateralAmount
473
+ ) = calculateRequiredCollateral(
474
+ poolInfo.collateralizationLevel,
475
+ poolInfo.retentionLevel,
476
+ sumInsuredAmount);
477
+ }
478
+
479
+
480
+ function calculateRequiredCollateral(
481
+ UFixed collateralizationLevel,
482
+ UFixed retentionLevel,
483
+ Amount sumInsuredAmount
484
+ )
485
+ public
486
+ pure
487
+ returns(
488
+ Amount totalCollateralAmount,
489
+ Amount localCollateralAmount
490
+ )
491
+ {
492
+ // collateralization is applied to sum insured
493
+ UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
494
+ totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
495
+
496
+ // retention level defines how much capital is required locally
497
+ localCollateralAmount = AmountLib.toAmount(
498
+ (retentionLevel * totalUFixed).toInt());
499
+ }
500
+
501
+
502
+ function _processStakingFees(
503
+ Fee memory stakingFee,
504
+ Amount stakingAmount
505
+ )
506
+ internal
507
+ pure
508
+ returns (Amount stakingNetAmount)
509
+ {
510
+ stakingNetAmount = stakingAmount;
511
+
512
+ // check if any staking fees apply
513
+ if (FeeLib.gtz(stakingFee)) {
514
+ (Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
515
+ stakingNetAmount = netAmount;
516
+
517
+ // TODO update fee balance for pool
518
+ }
519
+ }
520
+
521
+
522
+ /// @dev transfers the specified amount from the bundle owner to the pool's wallet
523
+ function _collectStakingAmount(
524
+ InstanceReader instanceReader,
525
+ NftId poolNftId,
526
+ address bundleOwner,
527
+ Amount amount
528
+ )
529
+ internal
530
+ {
531
+
532
+ // collecting investor token
533
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
534
+ address poolWallet = componentInfo.wallet;
535
+ componentInfo.tokenHandler.collectTokens(
536
+ bundleOwner,
537
+ poolWallet,
538
+ amount);
539
+ }
540
+
541
+ function _getDomain() internal pure override returns(ObjectType) {
542
+ return POOL();
543
+ }
544
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {PoolService} from "./PoolService.sol";
7
+
8
+ contract PoolServiceManager is ProxyManager {
9
+
10
+ PoolService private _poolService;
11
+
12
+ /// @dev initializes proxy manager with pool service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ PoolService poolSrv = new PoolService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(poolSrv),
24
+ data,
25
+ salt);
26
+
27
+ _poolService = PoolService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getPoolService()
32
+ external
33
+ view
34
+ returns (PoolService poolService)
35
+ {
36
+ return _poolService;
37
+ }
38
+
39
+ }