@etherisc/gif-next 0.0.2-f398177-971 → 0.0.2-f3b4c66-505

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 (725) 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/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1379 -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 +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +542 -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 +1130 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -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/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +589 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → distribution/Distribution.sol/Distribution.json} +334 -318
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1580 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +868 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +915 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +341 -110
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1523 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +201 -101
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +234 -91
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +227 -220
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1929 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1411 -517
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +288 -242
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +178 -90
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1509 -559
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +774 -0
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  118. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +243 -241
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  124. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +295 -450
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1261 -0
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  132. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +216 -71
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  134. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → pool/IPoolComponent.sol/IPoolComponent.json} +336 -290
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  136. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +511 -358
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  138. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +350 -418
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +879 -0
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +740 -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} +422 -459
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1496 -0
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -0
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  158. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IApplicationService.sol/IApplicationService.json} +203 -215
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  160. package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +338 -17
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +981 -0
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  164. package/artifacts/contracts/{instance/service → product}/IPricingService.sol/IPricingService.json +196 -83
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1018 -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} +100 -62
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1333 -0
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +808 -0
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +951 -0
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +784 -0
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  180. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +483 -29
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +291 -106
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  195. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/Registry.sol/Registry.json +982 -137
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1928 -0
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +362 -243
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  202. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +164 -86
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  204. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  206. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  212. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +317 -141
  213. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  214. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +277 -201
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1571 -0
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  219. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  220. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +123 -131
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  230. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +130 -134
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1203 -0
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  236. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  238. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +154 -0
  245. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IService.sol/IService.json +74 -2
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  249. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +797 -0
  252. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  253. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  254. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  255. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  256. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  257. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  258. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +28 -57
  260. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  261. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  262. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -90
  264. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  265. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  266. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Service.sol/Service.json +67 -102
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +617 -8
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  272. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  274. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  275. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → staking/IStaking.sol/IStaking.json} +682 -611
  276. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  277. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1096 -0
  278. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  279. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  280. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/Staking.sol/Staking.json +1849 -0
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +788 -0
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1301 -0
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +732 -0
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  296. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  297. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  302. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  304. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  306. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  308. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  310. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  311. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  312. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  314. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  315. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  316. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  318. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  320. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  322. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  324. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  326. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  328. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  330. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  332. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  334. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  336. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  338. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  339. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -7
  340. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  342. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  344. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +113 -0
  346. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  347. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  348. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  350. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  352. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  353. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  354. package/contracts/accounting/AccountingService.sol +262 -0
  355. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  356. package/contracts/accounting/IAccountingService.sol +45 -0
  357. package/contracts/authorization/AccessAdmin.sol +689 -0
  358. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  359. package/contracts/authorization/Authorization.sol +337 -0
  360. package/contracts/authorization/IAccess.sol +49 -0
  361. package/contracts/authorization/IAccessAdmin.sol +143 -0
  362. package/contracts/authorization/IAuthorization.sol +74 -0
  363. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  364. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  365. package/contracts/distribution/BasicDistribution.sol +141 -0
  366. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  367. package/contracts/{components → distribution}/Distribution.sol +171 -167
  368. package/contracts/distribution/DistributionService.sol +385 -0
  369. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  370. package/contracts/distribution/IDistributionComponent.sol +52 -0
  371. package/contracts/distribution/IDistributionService.sol +103 -0
  372. package/contracts/examples/fire/DamageLevel.sol +59 -0
  373. package/contracts/examples/fire/FirePool.sol +90 -0
  374. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  375. package/contracts/examples/fire/FireProduct.sol +437 -0
  376. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  377. package/contracts/examples/fire/FireUSD.sol +26 -0
  378. package/contracts/examples/unpermissioned/SimpleDistribution.sol +85 -0
  379. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  380. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  381. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  382. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  384. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  385. package/contracts/instance/BundleSet.sol +130 -0
  386. package/contracts/instance/IInstance.sol +43 -50
  387. package/contracts/instance/IInstanceService.sol +37 -38
  388. package/contracts/instance/Instance.sol +147 -129
  389. package/contracts/instance/InstanceAdmin.sol +437 -0
  390. package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
  391. package/contracts/instance/InstanceReader.sol +359 -77
  392. package/contracts/instance/InstanceService.sol +263 -167
  393. package/contracts/instance/InstanceServiceManager.sol +14 -29
  394. package/contracts/instance/InstanceStore.sol +157 -71
  395. package/contracts/instance/RiskSet.sol +118 -0
  396. package/contracts/instance/base/BalanceStore.sol +123 -0
  397. package/contracts/instance/base/Cloneable.sol +28 -0
  398. package/contracts/instance/base/ObjectCounter.sol +20 -0
  399. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  400. package/contracts/instance/base/ObjectSet.sol +77 -0
  401. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  402. package/contracts/instance/module/IBundle.sol +6 -9
  403. package/contracts/instance/module/IComponents.sol +28 -18
  404. package/contracts/instance/module/IDistribution.sol +10 -8
  405. package/contracts/instance/module/IPolicy.sol +41 -33
  406. package/contracts/instance/module/IRisk.sol +4 -1
  407. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  408. package/contracts/oracle/BasicOracle.sol +47 -0
  409. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  410. package/contracts/oracle/IOracle.sol +36 -0
  411. package/contracts/oracle/IOracleComponent.sol +33 -0
  412. package/contracts/oracle/IOracleService.sol +66 -0
  413. package/contracts/oracle/Oracle.sol +156 -0
  414. package/contracts/oracle/OracleService.sol +310 -0
  415. package/contracts/oracle/OracleServiceManager.sol +39 -0
  416. package/contracts/pool/BasicPool.sol +175 -0
  417. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  418. package/contracts/pool/BundleService.sol +395 -0
  419. package/contracts/pool/BundleServiceManager.sol +39 -0
  420. package/contracts/{instance/service → pool}/IBundleService.sol +42 -45
  421. package/contracts/pool/IPoolComponent.sol +62 -0
  422. package/contracts/pool/IPoolService.sol +165 -0
  423. package/contracts/pool/Pool.sol +345 -0
  424. package/contracts/pool/PoolLib.sol +216 -0
  425. package/contracts/pool/PoolService.sol +757 -0
  426. package/contracts/pool/PoolServiceManager.sol +39 -0
  427. package/contracts/product/ApplicationService.sol +274 -0
  428. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  429. package/contracts/product/BasicProduct.sol +51 -0
  430. package/contracts/product/BasicProductAuthorization.sol +56 -0
  431. package/contracts/product/ClaimService.sol +632 -0
  432. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  433. package/contracts/{instance/service → product}/IApplicationService.sol +18 -11
  434. package/contracts/{instance/service → product}/IClaimService.sol +64 -19
  435. package/contracts/product/IPolicyService.sol +95 -0
  436. package/contracts/product/IPricingService.sol +40 -0
  437. package/contracts/product/IProductComponent.sol +62 -0
  438. package/contracts/product/IRiskService.sol +33 -0
  439. package/contracts/product/PolicyService.sol +682 -0
  440. package/contracts/product/PolicyServiceLib.sol +65 -0
  441. package/contracts/product/PolicyServiceManager.sol +39 -0
  442. package/contracts/product/PricingService.sol +309 -0
  443. package/contracts/product/PricingServiceManager.sol +39 -0
  444. package/contracts/product/Product.sol +469 -0
  445. package/contracts/product/RiskService.sol +154 -0
  446. package/contracts/product/RiskServiceManager.sol +39 -0
  447. package/contracts/registry/ChainNft.sol +79 -40
  448. package/contracts/registry/IRegistry.sol +95 -30
  449. package/contracts/registry/IRegistryService.sol +34 -38
  450. package/contracts/registry/IRelease.sol +26 -0
  451. package/contracts/registry/ITransferInterceptor.sol +1 -2
  452. package/contracts/registry/Registry.sol +460 -197
  453. package/contracts/registry/RegistryAdmin.sol +354 -0
  454. package/contracts/registry/RegistryService.sol +89 -134
  455. package/contracts/registry/RegistryServiceManager.sol +23 -32
  456. package/contracts/registry/ReleaseAdmin.sol +245 -0
  457. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  458. package/contracts/registry/ReleaseRegistry.sol +511 -0
  459. package/contracts/registry/ServiceAuthorizationV3.sol +247 -0
  460. package/contracts/registry/TokenRegistry.sol +261 -64
  461. package/contracts/shared/Component.sol +227 -0
  462. package/contracts/shared/ComponentService.sol +692 -0
  463. package/contracts/shared/ComponentServiceManager.sol +38 -0
  464. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  465. package/contracts/shared/ContractLib.sol +253 -0
  466. package/contracts/shared/IComponent.sol +61 -0
  467. package/contracts/shared/IComponentService.sol +112 -0
  468. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  469. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  470. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  471. package/contracts/shared/INftOwnable.sol +4 -2
  472. package/contracts/shared/IPolicyHolder.sol +16 -21
  473. package/contracts/shared/IRegisterable.sol +23 -1
  474. package/contracts/shared/IService.sol +12 -7
  475. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  476. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  477. package/contracts/shared/KeyValueStore.sol +131 -0
  478. package/contracts/shared/Lifecycle.sol +88 -0
  479. package/contracts/shared/NftIdSet.sol +65 -0
  480. package/contracts/shared/NftOwnable.sol +34 -25
  481. package/contracts/shared/PolicyHolder.sol +20 -52
  482. package/contracts/shared/Registerable.sol +58 -24
  483. package/contracts/shared/RegistryLinked.sol +9 -14
  484. package/contracts/shared/Service.sol +33 -40
  485. package/contracts/shared/TokenHandler.sol +319 -13
  486. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  487. package/contracts/staking/IStaking.sol +165 -0
  488. package/contracts/staking/IStakingService.sol +165 -0
  489. package/contracts/staking/StakeManagerLib.sol +224 -0
  490. package/contracts/staking/Staking.sol +526 -0
  491. package/contracts/staking/StakingLifecycle.sol +23 -0
  492. package/contracts/staking/StakingManager.sol +52 -0
  493. package/contracts/staking/StakingReader.sol +190 -0
  494. package/contracts/staking/StakingService.sol +430 -0
  495. package/contracts/staking/StakingServiceManager.sol +45 -0
  496. package/contracts/staking/StakingStore.sol +605 -0
  497. package/contracts/staking/TargetManagerLib.sol +211 -0
  498. package/contracts/{types → type}/AddressSet.sol +1 -1
  499. package/contracts/{types → type}/Amount.sol +44 -3
  500. package/contracts/{types → type}/Blocknumber.sol +26 -3
  501. package/contracts/{types → type}/ClaimId.sol +6 -1
  502. package/contracts/{types → type}/Fee.sol +17 -16
  503. package/contracts/{types → type}/Key32.sol +2 -2
  504. package/contracts/type/Key32Set.sol +62 -0
  505. package/contracts/{types → type}/NftId.sol +21 -16
  506. package/contracts/{types → type}/NftIdSet.sol +2 -2
  507. package/contracts/type/ObjectType.sol +303 -0
  508. package/contracts/{types → type}/PayoutId.sol +10 -10
  509. package/contracts/{types → type}/Referral.sol +2 -1
  510. package/contracts/type/RequestId.sol +75 -0
  511. package/contracts/type/RiskId.sol +75 -0
  512. package/contracts/type/RoleId.sol +182 -0
  513. package/contracts/type/Seconds.sol +101 -0
  514. package/contracts/type/Selector.sol +107 -0
  515. package/contracts/{types → type}/StateId.sol +41 -2
  516. package/contracts/type/String.sol +53 -0
  517. package/contracts/{types → type}/Timestamp.sol +16 -7
  518. package/contracts/{types → type}/UFixed.sol +40 -121
  519. package/contracts/{types → type}/Version.sol +19 -7
  520. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  521. package/contracts/{shared → upgradeability}/ProxyManager.sol +93 -30
  522. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  523. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  524. package/package.json +12 -8
  525. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  526. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  527. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  528. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  529. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  530. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  531. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  532. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  533. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  534. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  535. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  536. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  537. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  538. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  539. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  540. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  542. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  544. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  545. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  546. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  547. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  548. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  549. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  550. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  551. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  552. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  554. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  555. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -918
  556. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  557. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -648
  558. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1288
  560. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -696
  562. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  563. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1384
  564. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  565. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -752
  566. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1556
  568. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -780
  570. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  578. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1281
  580. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -740
  582. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1622
  584. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  585. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -708
  586. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +0 -4
  587. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +0 -1004
  588. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +0 -4
  589. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +0 -688
  590. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -864
  592. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  593. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  594. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  595. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  596. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  597. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  598. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  599. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  600. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  601. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  602. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  603. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  604. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  605. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  606. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  607. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  608. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  609. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  610. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  611. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  612. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  613. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -370
  614. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  615. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  616. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  617. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -588
  618. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  619. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  620. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  622. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  624. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  625. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  626. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  627. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  628. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -281
  630. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  632. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  634. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -179
  636. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  638. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -312
  640. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  641. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  642. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  644. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  645. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  646. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  648. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  649. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  650. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -209
  652. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  653. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  654. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  656. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  658. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  660. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  662. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  665. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  667. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  669. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  670. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  671. package/contracts/components/Component.sol +0 -272
  672. package/contracts/components/IComponent.sol +0 -90
  673. package/contracts/components/IDistributionComponent.sol +0 -71
  674. package/contracts/components/IPoolComponent.sol +0 -114
  675. package/contracts/components/IProductComponent.sol +0 -41
  676. package/contracts/components/Pool.sol +0 -302
  677. package/contracts/components/Product.sol +0 -375
  678. package/contracts/instance/BundleManager.sol +0 -126
  679. package/contracts/instance/Cloneable.sol +0 -51
  680. package/contracts/instance/InstanceAccessManager.sol +0 -541
  681. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  682. package/contracts/instance/ObjectManager.sol +0 -82
  683. package/contracts/instance/base/ComponentService.sol +0 -148
  684. package/contracts/instance/base/KeyValueStore.sol +0 -149
  685. package/contracts/instance/base/Lifecycle.sol +0 -120
  686. package/contracts/instance/module/IAccess.sol +0 -54
  687. package/contracts/instance/module/ISetup.sol +0 -33
  688. package/contracts/instance/module/ITreasury.sol +0 -23
  689. package/contracts/instance/service/ApplicationService.sol +0 -186
  690. package/contracts/instance/service/BundleService.sol +0 -382
  691. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  692. package/contracts/instance/service/ClaimService.sol +0 -437
  693. package/contracts/instance/service/DistributionService.sol +0 -348
  694. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  695. package/contracts/instance/service/IDistributionService.sol +0 -87
  696. package/contracts/instance/service/IPolicyService.sol +0 -80
  697. package/contracts/instance/service/IPoolService.sol +0 -114
  698. package/contracts/instance/service/IPricingService.sol +0 -37
  699. package/contracts/instance/service/IProductService.sol +0 -40
  700. package/contracts/instance/service/PolicyService.sol +0 -376
  701. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  702. package/contracts/instance/service/PoolService.sol +0 -403
  703. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  704. package/contracts/instance/service/PricingService.sol +0 -275
  705. package/contracts/instance/service/PricingServiceManager.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/AccessManagerUpgradeableInitializeable.sol +0 -13
  711. package/contracts/shared/ContractDeployerLib.sol +0 -72
  712. package/contracts/test/TestFee.sol +0 -25
  713. package/contracts/test/TestRegisterable.sol +0 -18
  714. package/contracts/test/TestRoleId.sol +0 -14
  715. package/contracts/test/TestService.sol +0 -25
  716. package/contracts/test/TestToken.sol +0 -26
  717. package/contracts/test/TestVersion.sol +0 -44
  718. package/contracts/test/TestVersionable.sol +0 -17
  719. package/contracts/types/ChainId.sol +0 -38
  720. package/contracts/types/NumberId.sol +0 -52
  721. package/contracts/types/ObjectType.sol +0 -161
  722. package/contracts/types/RiskId.sol +0 -43
  723. package/contracts/types/RoleId.sol +0 -97
  724. package/contracts/types/Seconds.sol +0 -54
  725. /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
+ }