@etherisc/gif-next 0.0.2-b28f7c7-340 → 0.0.2-b312c9a-831

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