@etherisc/gif-next 0.0.2-7bdebe2-893 → 0.0.2-7bf391b-976

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