@etherisc/gif-next 0.0.2-7dc3cd3-858 → 0.0.2-7e48d89-379

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 (419) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +38 -33
  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 +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +8 -8
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +8 -8
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +23 -4
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +85 -90
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +19 -19
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -64
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +182 -74
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +71 -55
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -26
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +71 -0
  32. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  33. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  34. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  35. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +7 -7
  36. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  37. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +10 -5
  38. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/Instance.sol/Instance.json +19 -19
  40. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  41. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  42. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  43. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
  44. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +80 -122
  46. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  47. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +44 -39
  48. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -35
  50. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +89 -212
  52. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  53. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  54. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  55. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  57. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  58. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  59. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  60. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  61. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  67. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  68. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  69. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  70. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -77
  71. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  72. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +21 -21
  73. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  74. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  75. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -26
  76. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -61
  79. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  81. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  83. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  84. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +54 -125
  85. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  86. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +19 -19
  87. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  88. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +394 -62
  89. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  90. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +107 -43
  91. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  92. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  93. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  94. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -83
  95. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +158 -54
  97. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  98. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -121
  99. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +226 -90
  101. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +52 -36
  103. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  104. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +33 -44
  105. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +32 -40
  107. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  108. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -64
  109. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  110. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +19 -19
  111. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +88 -72
  113. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  115. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  116. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  117. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  118. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
  119. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  120. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +188 -108
  121. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  123. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -26
  124. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  125. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +260 -167
  127. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +59 -43
  129. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  131. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  133. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  134. package/artifacts/contracts/product/Product.sol/Product.json +19 -64
  135. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  136. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  137. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  140. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  141. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  142. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  143. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  144. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  145. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  146. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  147. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -29
  148. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  149. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +100 -95
  150. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  151. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  152. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  154. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  155. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  156. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  157. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  158. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  159. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +26 -7
  160. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  161. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  162. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  163. package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
  164. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +255 -62
  166. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +69 -49
  168. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  171. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -26
  175. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  177. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  179. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  185. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  186. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -64
  189. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  190. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  191. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  192. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  193. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  194. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  195. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  197. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  203. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  205. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  206. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  207. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  208. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  209. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
  210. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  211. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +40 -113
  213. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  214. package/artifacts/contracts/staking/Staking.sol/Staking.json +55 -119
  215. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  216. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  217. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +46 -46
  219. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  221. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  223. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  225. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  227. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  228. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  229. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  230. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  237. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  239. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  241. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  242. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  243. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  245. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  246. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  247. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  249. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  251. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  253. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  255. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  257. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +14 -14
  259. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  261. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  263. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  265. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  267. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  269. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  271. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  273. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  275. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  277. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  279. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  280. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  281. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  282. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  283. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  284. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  285. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  286. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  287. package/contracts/authorization/AccessAdmin.sol +8 -10
  288. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  289. package/contracts/authorization/Authorization.sol +0 -1
  290. package/contracts/authorization/IServiceAuthorization.sol +3 -0
  291. package/contracts/authorization/ServiceAuthorization.sol +4 -0
  292. package/contracts/distribution/BasicDistribution.sol +4 -15
  293. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  294. package/contracts/distribution/Distribution.sol +22 -10
  295. package/contracts/distribution/DistributionService.sol +47 -27
  296. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  297. package/contracts/distribution/IDistributionComponent.sol +8 -4
  298. package/contracts/distribution/IDistributionService.sol +10 -0
  299. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  300. package/contracts/instance/IInstance.sol +7 -7
  301. package/contracts/instance/IInstanceService.sol +6 -5
  302. package/contracts/instance/Instance.sol +8 -8
  303. package/contracts/instance/{InstanceAdminNew.sol → InstanceAdmin.sol} +33 -9
  304. package/contracts/instance/InstanceAuthorizationV3.sol +16 -21
  305. package/contracts/instance/InstanceReader.sol +10 -7
  306. package/contracts/instance/InstanceService.sol +69 -32
  307. package/contracts/instance/InstanceServiceManager.sol +2 -6
  308. package/contracts/instance/InstanceStore.sol +8 -4
  309. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  310. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
  311. package/contracts/instance/module/IBundle.sol +1 -1
  312. package/contracts/instance/module/IComponents.sol +1 -7
  313. package/contracts/instance/module/IDistribution.sol +0 -1
  314. package/contracts/instance/module/IPolicy.sol +1 -1
  315. package/contracts/mock/Dip.sol +1 -1
  316. package/contracts/oracle/IOracleComponent.sol +2 -1
  317. package/contracts/oracle/Oracle.sol +15 -6
  318. package/contracts/oracle/OracleServiceManager.sol +2 -5
  319. package/contracts/pool/BasicPool.sol +7 -5
  320. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  321. package/contracts/pool/BundleService.sol +181 -41
  322. package/contracts/pool/BundleServiceManager.sol +2 -5
  323. package/contracts/pool/IBundleService.sol +33 -5
  324. package/contracts/pool/IPoolComponent.sol +6 -0
  325. package/contracts/pool/IPoolService.sol +14 -17
  326. package/contracts/pool/Pool.sol +32 -15
  327. package/contracts/pool/PoolService.sol +152 -85
  328. package/contracts/pool/PoolServiceManager.sol +2 -5
  329. package/contracts/product/ApplicationService.sol +49 -53
  330. package/contracts/product/ApplicationServiceManager.sol +2 -2
  331. package/contracts/product/BasicProduct.sol +3 -33
  332. package/contracts/product/BasicProductAuthorization.sol +3 -0
  333. package/contracts/product/ClaimService.sol +13 -39
  334. package/contracts/product/ClaimServiceManager.sol +2 -2
  335. package/contracts/product/IApplicationService.sol +1 -0
  336. package/contracts/product/IClaimService.sol +1 -0
  337. package/contracts/product/IPolicyService.sol +23 -17
  338. package/contracts/product/IProductComponent.sol +1 -0
  339. package/contracts/product/IProductService.sol +1 -0
  340. package/contracts/product/PolicyService.sol +251 -134
  341. package/contracts/product/PolicyServiceManager.sol +2 -5
  342. package/contracts/product/PricingService.sol +5 -1
  343. package/contracts/product/PricingServiceManager.sol +2 -5
  344. package/contracts/product/Product.sol +27 -6
  345. package/contracts/product/ProductService.sol +7 -32
  346. package/contracts/product/ProductServiceManager.sol +2 -5
  347. package/contracts/registry/IRegistry.sol +26 -13
  348. package/contracts/registry/IRegistryService.sol +6 -6
  349. package/contracts/registry/Registry.sol +80 -82
  350. package/contracts/registry/RegistryAdmin.sol +34 -23
  351. package/contracts/registry/RegistryService.sol +4 -18
  352. package/contracts/registry/RegistryServiceManager.sol +2 -2
  353. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  354. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +145 -178
  355. package/contracts/registry/ServiceAuthorizationV3.sol +5 -5
  356. package/contracts/registry/TokenRegistry.sol +2 -2
  357. package/contracts/shared/Component.sol +24 -37
  358. package/contracts/shared/ComponentService.sol +83 -21
  359. package/contracts/shared/ComponentServiceManager.sol +2 -2
  360. package/contracts/shared/IComponent.sol +4 -4
  361. package/contracts/shared/IComponentService.sol +15 -9
  362. package/contracts/shared/IInstanceLinkedComponent.sol +9 -3
  363. package/contracts/shared/IKeyValueStore.sol +1 -0
  364. package/contracts/shared/ILifecycle.sol +1 -2
  365. package/contracts/shared/IService.sol +1 -1
  366. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  367. package/contracts/shared/InstanceLinkedComponent.sol +21 -0
  368. package/contracts/shared/KeyValueStore.sol +6 -2
  369. package/contracts/shared/Lifecycle.sol +16 -69
  370. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  371. package/contracts/shared/NftOwnable.sol +2 -2
  372. package/contracts/shared/PolicyHolder.sol +2 -5
  373. package/contracts/shared/Service.sol +3 -4
  374. package/contracts/shared/TokenHandler.sol +100 -19
  375. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  376. package/contracts/staking/IStaking.sol +1 -2
  377. package/contracts/staking/IStakingService.sol +12 -5
  378. package/contracts/staking/StakeManagerLib.sol +0 -25
  379. package/contracts/staking/Staking.sol +21 -37
  380. package/contracts/staking/StakingLifecycle.sol +23 -0
  381. package/contracts/staking/StakingManager.sol +2 -6
  382. package/contracts/staking/StakingReader.sol +12 -16
  383. package/contracts/staking/StakingService.sol +8 -12
  384. package/contracts/staking/StakingServiceManager.sol +2 -2
  385. package/contracts/staking/StakingStore.sol +15 -23
  386. package/contracts/type/Amount.sol +12 -5
  387. package/contracts/type/Blocknumber.sol +7 -1
  388. package/contracts/type/ObjectType.sol +3 -7
  389. package/contracts/type/Referral.sol +1 -0
  390. package/contracts/type/Seconds.sol +13 -1
  391. package/contracts/type/Timestamp.sol +11 -1
  392. package/contracts/type/UFixed.sol +29 -10
  393. package/contracts/type/Version.sol +3 -1
  394. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  395. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  396. package/package.json +3 -3
  397. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.dbg.json +0 -4
  398. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.json +0 -1385
  399. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  400. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  401. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.dbg.json +0 -4
  402. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.json +0 -1616
  403. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  404. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -181
  405. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  406. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1140
  407. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  408. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  409. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  410. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  411. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  412. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  413. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  414. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  415. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  416. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  417. package/contracts/authorization/InstanceAdmin.sol +0 -108
  418. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  419. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,46 +1,31 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Pool} from "./Pool.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {IInstance} from "../instance/IInstance.sol";
7
4
  import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
8
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";
9
10
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
-
11
- import {IVersionable} from "../shared/IVersionable.sol";
12
- import {Versionable} from "../shared/Versionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.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";
14
15
 
15
16
  import {Amount, AmountLib} from "../type/Amount.sol";
16
17
  import {Fee, FeeLib} from "../type/Fee.sol";
17
- import {NftId, NftIdLib} from "../type/NftId.sol";
18
- import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
19
20
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
20
21
  import {Fee, FeeLib} from "../type/Fee.sol";
21
- import {Version, VersionLib} from "../type/Version.sol";
22
- import {KEEP_STATE, StateId} from "../type/StateId.sol";
22
+ import {KEEP_STATE} from "../type/StateId.sol";
23
23
  import {Seconds} from "../type/Seconds.sol";
24
- import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
25
24
  import {TokenHandler} from "../shared/TokenHandler.sol";
26
25
  import {UFixed} from "../type/UFixed.sol";
27
- import {Version, VersionLib} from "../type/Version.sol";
28
-
29
- import {IService} from "../shared/IService.sol";
30
- import {Service} from "../shared/Service.sol";
31
- import {BundleManager} from "../instance/BundleManager.sol";
32
26
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
33
- import {IBundleService} from "./IBundleService.sol";
34
- import {IComponentService} from "../shared/IComponentService.sol";
35
- import {IInstanceService} from "../instance/IInstanceService.sol";
36
- import {IPoolService} from "./IPoolService.sol";
37
- import {IRegistryService} from "../registry/IRegistryService.sol";
38
- import {IStaking} from "../staking/IStaking.sol";
39
- import {InstanceService} from "../instance/InstanceService.sol";
40
27
  import {InstanceReader} from "../instance/InstanceReader.sol";
41
28
  import {InstanceStore} from "../instance/InstanceStore.sol";
42
- import {IComponent} from "../shared/IComponent.sol";
43
- import {IPoolComponent} from "./IPoolComponent.sol";
44
29
 
45
30
  string constant POOL_SERVICE_NAME = "PoolService";
46
31
 
@@ -48,9 +33,6 @@ contract PoolService is
48
33
  ComponentVerifyingService,
49
34
  IPoolService
50
35
  {
51
- using NftIdLib for NftId;
52
- using AmountLib for Amount;
53
-
54
36
  IBundleService internal _bundleService;
55
37
  IComponentService internal _componentService;
56
38
  IInstanceService private _instanceService;
@@ -84,24 +66,20 @@ contract PoolService is
84
66
  registerInterface(type(IPoolService).interfaceId);
85
67
  }
86
68
 
87
-
88
- function setMaxCapitalAmount(Amount maxCapitalAmount)
69
+ /// @inheritdoc IPoolService
70
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
89
71
  external
90
72
  virtual
91
73
  {
92
- /*
93
74
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
94
75
  InstanceReader instanceReader = instance.getInstanceReader();
76
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
95
77
 
96
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
97
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
98
- Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
99
-
100
- poolInfo.maxCapitalAmount = maxCapitalAmount;
78
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
79
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
101
80
  instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
102
81
 
103
- emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
104
- */
82
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
105
83
  }
106
84
 
107
85
  function setBundleOwnerRole(RoleId bundleOwnerRole)
@@ -125,54 +103,43 @@ contract PoolService is
125
103
  emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
126
104
  }
127
105
 
128
-
129
- function setFees(
130
- Fee memory poolFee,
131
- Fee memory stakingFee,
132
- Fee memory performanceFee
133
- )
134
- external
135
- virtual
136
- {
137
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
138
-
139
- IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
140
- poolInfo.poolFee = poolFee;
141
- poolInfo.stakingFee = stakingFee;
142
- poolInfo.performanceFee = performanceFee;
143
-
144
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
145
-
146
- // TODO add logging
147
- }
148
-
106
+ /// @inheritdoc IPoolService
149
107
  function createBundle(
150
108
  address bundleOwner, // initial bundle owner
151
109
  Fee memory fee, // fees deducted from premium that go to bundle owner
110
+ // TODO: remove stakingAmount and just create an empty bundle without tokens
152
111
  Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
153
112
  Seconds lifetime, // initial duration for which new policies are covered
154
113
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
155
114
  )
156
115
  external
157
116
  virtual
158
- returns(NftId bundleNftId)
117
+ returns(NftId bundleNftId, Amount netStakedAmount)
159
118
  {
160
119
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
161
- InstanceReader instanceReader = instance.getInstanceReader();
162
120
 
163
- (
164
- Amount stakingFeeAmount,
165
- Amount stakingNetAmount
166
- ) = FeeLib.calculateFee(
167
- _getStakingFee(instanceReader, poolNftId),
121
+ {
122
+ InstanceReader instanceReader = instance.getInstanceReader();
123
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
124
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
125
+ if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
126
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
127
+ }
128
+ }
129
+
130
+
131
+ Amount stakingFeeAmount;
132
+ (stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
133
+ _getStakingFee(instance.getInstanceReader(), poolNftId),
168
134
  stakingAmount);
169
135
 
136
+
170
137
  bundleNftId = _bundleService.create(
171
138
  instance,
172
139
  poolNftId,
173
140
  bundleOwner,
174
141
  fee,
175
- stakingNetAmount,
142
+ netStakedAmount,
176
143
  lifetime,
177
144
  filter);
178
145
 
@@ -180,12 +147,12 @@ contract PoolService is
180
147
  _componentService.increasePoolBalance(
181
148
  instance.getInstanceStore(),
182
149
  poolNftId,
183
- stakingAmount,
150
+ netStakedAmount,
184
151
  stakingFeeAmount);
185
152
 
186
153
  // pool bookkeeping and collect tokens from bundle owner
187
154
  _collectStakingAmount(
188
- instanceReader,
155
+ instance.getInstanceReader(),
189
156
  poolNftId,
190
157
  bundleOwner,
191
158
  stakingAmount);
@@ -199,8 +166,8 @@ contract PoolService is
199
166
  view
200
167
  returns (Fee memory stakingFee)
201
168
  {
202
- NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
203
- return instanceReader.getPoolInfo(productNftId).stakingFee;
169
+ NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
170
+ return instanceReader.getProductInfo(productNftId).stakingFee;
204
171
  }
205
172
 
206
173
  function closeBundle(NftId bundleNftId)
@@ -209,16 +176,121 @@ contract PoolService is
209
176
  {
210
177
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
211
178
 
212
- // TODO book keeping for pool collateral released outside of retention level
179
+ // TODO get performance fee for pool (#477)
213
180
 
214
181
  // releasing collateral in bundle
215
- _bundleService.close(instance, bundleNftId);
216
-
217
- // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
182
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
218
183
 
184
+ _componentService.decreasePoolBalance(
185
+ instance.getInstanceStore(),
186
+ poolNftId,
187
+ unstakedAmount + feeAmount,
188
+ AmountLib.zero());
189
+
219
190
  emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
191
+
192
+ if ((unstakedAmount + feeAmount).gtz()){
193
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
194
+ poolComponentInfo.tokenHandler.distributeTokens(
195
+ poolComponentInfo.wallet,
196
+ getRegistry().ownerOf(bundleNftId),
197
+ unstakedAmount + feeAmount);
198
+ }
199
+ }
200
+
201
+ /// @inheritdoc IPoolService
202
+ function stake(NftId bundleNftId, Amount amount)
203
+ external
204
+ virtual
205
+ // TODO: restricted() (once #462 is done)
206
+ returns(Amount netAmount)
207
+ {
208
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
209
+ InstanceReader instanceReader = instance.getInstanceReader();
210
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
211
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
212
+
213
+ if (bundleInfo.poolNftId != poolNftId) {
214
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
215
+ }
216
+
217
+ {
218
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
219
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
220
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
221
+ }
222
+ }
223
+
224
+ // calculate fees
225
+ Amount feeAmount;
226
+ (
227
+ feeAmount,
228
+ netAmount
229
+ ) = FeeLib.calculateFee(
230
+ _getStakingFee(instanceReader, poolNftId),
231
+ amount);
232
+
233
+ // do all the bookkeeping
234
+ _componentService.increasePoolBalance(
235
+ instance.getInstanceStore(),
236
+ poolNftId,
237
+ netAmount,
238
+ feeAmount);
239
+
240
+ _bundleService.stake(instance, bundleNftId, netAmount);
241
+
242
+ // collect tokens from bundle owner
243
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
244
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
245
+ _collectStakingAmount(
246
+ instanceReader,
247
+ poolNftId,
248
+ bundleOwner,
249
+ amount);
220
250
  }
221
251
 
252
+ /// @inheritdoc IPoolService
253
+ function unstake(NftId bundleNftId, Amount amount)
254
+ external
255
+ virtual
256
+ // TODO: restricted() (once #462 is done)
257
+ returns(Amount netAmount)
258
+ {
259
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
260
+ InstanceReader instanceReader = instance.getInstanceReader();
261
+ InstanceStore instanceStore = instance.getInstanceStore();
262
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
263
+
264
+ if (bundleInfo.poolNftId != poolNftId) {
265
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
266
+ }
267
+
268
+ // call bundle service for bookkeeping and additional checks
269
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
270
+
271
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
272
+ // if amount was max, this was set to the available amount
273
+
274
+ // TODO: handle performance fees (issue #477)
275
+
276
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
277
+ _componentService.decreasePoolBalance(
278
+ instanceStore,
279
+ poolNftId,
280
+ unstakedAmount,
281
+ AmountLib.zero());
282
+
283
+ IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
284
+ address poolWallet = poolComponentInfo.wallet;
285
+ // transfer amount to bundle owner
286
+ address owner = getRegistry().ownerOf(bundleNftId);
287
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
288
+ poolComponentInfo.tokenHandler.distributeTokens(
289
+ poolWallet,
290
+ owner,
291
+ unstakedAmount);
292
+ return unstakedAmount;
293
+ }
222
294
 
223
295
  function processSale(
224
296
  NftId bundleNftId,
@@ -422,7 +494,6 @@ contract PoolService is
422
494
  }
423
495
 
424
496
 
425
- // TODO create (I)TreasuryService that deals with all gif related token transfers
426
497
  /// @dev transfers the specified amount from the bundle owner to the pool's wallet
427
498
  function _collectStakingAmount(
428
499
  InstanceReader instanceReader,
@@ -435,15 +506,11 @@ contract PoolService is
435
506
 
436
507
  // collecting investor token
437
508
  IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
438
- TokenHandler tokenHandler = componentInfo.tokenHandler;
439
509
  address poolWallet = componentInfo.wallet;
440
-
441
- if(amount.gtz()) {
442
- tokenHandler.transfer(
443
- bundleOwner,
444
- poolWallet,
445
- amount);
446
- }
510
+ componentInfo.tokenHandler.collectTokens(
511
+ bundleOwner,
512
+ poolWallet,
513
+ amount);
447
514
  }
448
515
 
449
516
  function _getDomain() internal pure override returns(ObjectType) {
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {PoolService} from "./PoolService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract PoolServiceManager is ProxyManager {
12
9
 
@@ -1,51 +1,27 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IApplicationService} from "./IApplicationService.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
6
+ import {IInstance} from "../instance/IInstance.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IPolicy} from "../instance/module/IPolicy.sol";
9
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
10
+ import {IPricingService} from "./IPricingService.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
12
+
4
13
  import {AmountLib} from "../type/Amount.sol";
5
14
  import {Seconds} from "../type/Seconds.sol";
6
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
7
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
8
- import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
9
- import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, REGISTRY, APPLICATION, POLICY, BUNDLE, PRICE} from "../type/ObjectType.sol";
10
- import {APPLIED, REVOKED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
15
+ import {zeroTimestamp} from "../type/Timestamp.sol";
16
+ import {ObjectType, DISTRIBUTION, PRODUCT, REGISTRY, APPLICATION, POLICY, PRICE} from "../type/ObjectType.sol";
17
+ import {REVOKED} from "../type/StateId.sol";
11
18
  import {NftId, NftIdLib} from "../type/NftId.sol";
12
- import {Fee, FeeLib} from "../type/Fee.sol";
13
19
  import {ReferralId} from "../type/Referral.sol";
14
20
  import {RiskId} from "../type/RiskId.sol";
15
- import {StateId} from "../type/StateId.sol";
16
- import {Version, VersionLib} from "../type/Version.sol";
17
21
  import {Amount, AmountLib} from "../type/Amount.sol";
18
-
19
- import {TokenHandler} from "../shared/TokenHandler.sol";
20
- import {IVersionable} from "../shared/IVersionable.sol";
21
- import {Versionable} from "../shared/Versionable.sol";
22
- import {IService} from "../shared/IService.sol";
23
- import {Service} from "../shared/Service.sol";
24
-
25
- import {IRegistry} from "../registry/IRegistry.sol";
26
-
27
- import {IProductComponent} from "./IProductComponent.sol";
28
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
29
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
30
- import {Product} from "./Product.sol";
31
-
32
- import {IComponents} from "../instance/module/IComponents.sol";
33
- import {IPolicy} from "../instance/module/IPolicy.sol";
34
- import {IRisk} from "../instance/module/IRisk.sol";
35
- import {IBundle} from "../instance/module/IBundle.sol";
36
- import {IProductService} from "./IProductService.sol";
37
-
38
22
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
39
-
40
- import {IInstance} from "../instance/IInstance.sol";
41
23
  import {InstanceReader} from "../instance/InstanceReader.sol";
42
24
 
43
- import {IApplicationService} from "./IApplicationService.sol";
44
- import {IBundleService} from "../pool/IBundleService.sol";
45
- import {IDistributionService} from "../distribution/IDistributionService.sol";
46
- import {IPoolService} from "../pool/IPoolService.sol";
47
- import {IPricingService} from "./IPricingService.sol";
48
- import {IRegistryService} from "../registry/IRegistryService.sol";
49
25
 
50
26
 
51
27
  contract ApplicationService is
@@ -152,6 +128,7 @@ contract ApplicationService is
152
128
  address applicationOwner,
153
129
  RiskId riskId,
154
130
  Amount sumInsuredAmount,
131
+ Amount premiumAmount,
155
132
  Seconds lifetime,
156
133
  NftId bundleNftId,
157
134
  ReferralId referralId,
@@ -176,13 +153,45 @@ contract ApplicationService is
176
153
  applicationNftId = _registerApplication(productNftId, applicationOwner);
177
154
 
178
155
  // create policy info for application
179
- IPolicy.PolicyInfo memory applicationInfo = IPolicy.PolicyInfo({
156
+ IPolicy.PolicyInfo memory applicationInfo = _createApplicationInfo(
157
+ productNftId,
158
+ riskId,
159
+ sumInsuredAmount,
160
+ premiumAmount,
161
+ lifetime,
162
+ bundleNftId,
163
+ referralId,
164
+ applicationData);
165
+
166
+ // register application with instance
167
+ instance.getInstanceStore().createApplication(
168
+ applicationNftId,
169
+ applicationInfo);
170
+
171
+ // TODO: add logging
172
+ }
173
+
174
+ function _createApplicationInfo(
175
+ NftId productNftId,
176
+ RiskId riskId,
177
+ Amount sumInsuredAmount,
178
+ Amount premiumAmount,
179
+ Seconds lifetime,
180
+ NftId bundleNftId,
181
+ ReferralId referralId,
182
+ bytes memory applicationData
183
+ )
184
+ internal
185
+ virtual
186
+ returns (IPolicy.PolicyInfo memory applicationInfo)
187
+ {
188
+ return IPolicy.PolicyInfo({
180
189
  productNftId: productNftId,
181
190
  bundleNftId: bundleNftId,
182
191
  referralId: referralId,
183
192
  riskId: riskId,
184
193
  sumInsuredAmount: sumInsuredAmount,
185
- premiumAmount: AmountLib.zero(),
194
+ premiumAmount: premiumAmount,
186
195
  premiumPaidAmount: AmountLib.zero(),
187
196
  lifetime: lifetime,
188
197
  applicationData: applicationData,
@@ -195,21 +204,8 @@ contract ApplicationService is
195
204
  expiredAt: zeroTimestamp(),
196
205
  closedAt: zeroTimestamp()
197
206
  });
198
-
199
- // TODO consider to provide this amount externally
200
- // actual calculation is done 2nd time anyway for premium collection
201
- // calculate premium amount
202
- applicationInfo.premiumAmount = _calculatePremiumAmount(applicationInfo);
203
-
204
- // register application with instance
205
- instance.getInstanceStore().createApplication(
206
- applicationNftId,
207
- applicationInfo);
208
-
209
- // TODO: add logging
210
207
  }
211
208
 
212
-
213
209
  function renew(
214
210
  NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
215
211
  NftId bundleNftId // will likely need a newer bundle for underwriting
@@ -218,7 +214,7 @@ contract ApplicationService is
218
214
  virtual override
219
215
  returns (NftId applicationNftId)
220
216
  {
221
-
217
+ // TODO implement
222
218
  }
223
219
 
224
220
 
@@ -234,7 +230,7 @@ contract ApplicationService is
234
230
  external
235
231
  virtual override
236
232
  {
237
-
233
+ // TODO implement
238
234
  }
239
235
 
240
236
  function revoke(NftId applicationNftId)
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {ApplicationService} from "./ApplicationService.sol";
7
7
 
8
8
  contract ApplicationServiceManager is ProxyManager {
@@ -1,43 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
- import {Amount, AmountLib} from "../type/Amount.sol";
7
- import {ClaimId} from "../type/ClaimId.sol";
8
- import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
9
- import {Fee, FeeLib} from "../type/Fee.sol";
10
- import {IRisk} from "../instance/module/IRisk.sol";
11
- import {IApplicationService} from "./IApplicationService.sol";
4
+ import {Fee} from "../type/Fee.sol";
12
5
  import {IAuthorization} from "../authorization/IAuthorization.sol";
13
- import {IComponentService} from "../shared/IComponentService.sol";
14
- import {IPolicyService} from "./IPolicyService.sol";
15
- import {IProductService} from "./IProductService.sol";
16
- import {IClaimService} from "./IClaimService.sol";
17
- import {IPricingService} from "./IPricingService.sol";
18
- import {IProductComponent} from "./IProductComponent.sol";
19
- import {NftId, NftIdLib} from "../type/NftId.sol";
6
+ import {NftId} from "../type/NftId.sol";
20
7
  import {Product} from "../product/Product.sol";
21
- import {PayoutId} from "../type/PayoutId.sol";
22
- import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
23
- import {ReferralId} from "../type/Referral.sol";
24
- import {RiskId, RiskIdLib} from "../type/RiskId.sol";
25
- import {Seconds} from "../type/Seconds.sol";
26
- import {StateId} from "../type/StateId.sol";
27
- import {Timestamp} from "../type/Timestamp.sol";
28
-
29
- import {TokenHandler} from "../shared/TokenHandler.sol";
30
-
31
- import {InstanceReader} from "../instance/InstanceReader.sol";
32
- import {IPolicy} from "../instance/module/IPolicy.sol";
33
- import {IComponents} from "../instance/module/IComponents.sol";
34
- import {Pool} from "../pool/Pool.sol";
35
- import {Distribution} from "../distribution/Distribution.sol";
36
8
 
37
9
  abstract contract BasicProduct is
38
10
  Product
39
11
  {
40
-
12
+
41
13
  function setFees(
42
14
  Fee memory productFee,
43
15
  Fee memory processingFee
@@ -49,8 +21,6 @@ abstract contract BasicProduct is
49
21
  {
50
22
  _setFees(productFee, processingFee);
51
23
  }
52
-
53
-
54
24
  function _initializeBasicProduct(
55
25
  address registry,
56
26
  NftId instanceNftId,
@@ -5,6 +5,7 @@ import {Authorization} from "../authorization/Authorization.sol";
5
5
  import {BasicProduct} from "./BasicProduct.sol";
6
6
  import {PRODUCT} from "../type/ObjectType.sol";
7
7
  import {IAccess} from "../authorization/IAccess.sol";
8
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
9
  import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
9
10
  import {RoleId} from "../type/RoleId.sol";
10
11
 
@@ -35,6 +36,8 @@ contract BasicProductAuthorization
35
36
  // authorize public role (open access to any account, only allows to lock target)
36
37
  functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
37
38
  _authorize(functions, BasicProduct.setFees.selector, "setFees");
39
+
40
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
38
41
  }
39
42
  }
40
43