@etherisc/gif-next 0.0.2-d911522 → 0.0.2-d9bed37-033

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