@etherisc/gif-next 0.0.2-8eb96a8-113 → 0.0.2-8f3d499-425

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