@etherisc/gif-next 0.0.2-93de5de-423 → 0.0.2-93ee1cf-782

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