@etherisc/gif-next 0.0.2-cc74a8b-656 → 0.0.2-ccfa4c7-304

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