@etherisc/gif-next 0.0.2-b72409c-493 → 0.0.2-b7eedf9-238

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