@etherisc/gif-next 0.0.2-77c72ae-504 → 0.0.2-782e47c-610

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