@etherisc/gif-next 0.0.2-ab8a361 → 0.0.2-abde86b-349

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