@etherisc/gif-next 0.0.2-866ef18-420 → 0.0.2-86dae40-160

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 (342) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  14. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  16. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +85 -90
  18. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  20. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -64
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +182 -74
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +54 -38
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -26
  28. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +71 -0
  30. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  31. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  32. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  33. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  34. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  35. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  36. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2 -2
  38. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  39. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  40. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  41. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +80 -122
  42. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  43. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +16 -16
  44. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
  46. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  47. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +72 -194
  48. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  50. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  53. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  55. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  57. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  60. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  63. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  64. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  65. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  66. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -77
  67. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  68. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  69. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  70. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  71. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -26
  72. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  73. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  74. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -61
  75. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  76. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  77. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  79. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  80. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +54 -125
  81. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  82. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  83. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  84. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +383 -51
  85. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  86. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -26
  87. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  88. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  89. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  90. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -83
  91. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +158 -54
  93. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  94. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -121
  95. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +226 -90
  97. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -19
  99. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  100. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +21 -32
  101. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +9 -17
  103. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  104. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -64
  105. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  107. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  108. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -58
  109. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +30 -30
  111. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  112. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  113. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  114. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
  115. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  116. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +188 -108
  117. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  118. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  119. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -26
  120. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  121. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  122. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +260 -167
  123. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +42 -26
  125. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
  127. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
  129. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  130. package/artifacts/contracts/product/Product.sol/Product.json +19 -64
  131. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ProductService.sol/ProductService.json +2 -2
  133. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +2 -2
  135. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  136. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  137. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  138. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  139. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  140. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  141. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  142. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2 -2
  143. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  144. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  145. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  147. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  148. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
  150. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
  152. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  154. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  155. package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
  156. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +327 -62
  158. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +88 -32
  160. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  161. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  162. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  163. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  164. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  165. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  166. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -26
  167. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  168. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  169. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  174. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  175. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  176. package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
  177. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  178. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -64
  179. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  180. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  181. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  182. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  184. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  185. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  186. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  188. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  189. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  190. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  191. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  192. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +240 -16
  193. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  194. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
  195. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  196. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  197. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +40 -113
  198. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  199. package/artifacts/contracts/staking/Staking.sol/Staking.json +120 -112
  200. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  202. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +61 -25
  203. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  204. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  205. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  206. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
  207. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
  209. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +17 -12
  211. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  212. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -2
  213. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  214. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  215. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  216. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  217. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  218. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  219. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  220. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  221. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  222. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  223. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  224. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  225. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  227. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  228. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  229. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  234. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  240. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  241. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  242. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  244. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  246. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  247. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  248. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  249. package/artifacts/contracts/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
  250. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  251. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  252. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  253. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  254. package/contracts/distribution/BasicDistribution.sol +4 -15
  255. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  256. package/contracts/distribution/Distribution.sol +22 -10
  257. package/contracts/distribution/DistributionService.sol +47 -27
  258. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  259. package/contracts/distribution/IDistributionComponent.sol +8 -4
  260. package/contracts/distribution/IDistributionService.sol +10 -0
  261. package/contracts/instance/InstanceAuthorizationV3.sol +2 -0
  262. package/contracts/instance/InstanceReader.sol +10 -7
  263. package/contracts/instance/InstanceService.sol +51 -27
  264. package/contracts/instance/InstanceServiceManager.sol +2 -6
  265. package/contracts/instance/InstanceStore.sol +2 -1
  266. package/contracts/instance/base/ObjectLifecycle.sol +2 -3
  267. package/contracts/instance/module/IBundle.sol +1 -1
  268. package/contracts/instance/module/IComponents.sol +1 -7
  269. package/contracts/instance/module/IDistribution.sol +0 -1
  270. package/contracts/instance/module/IPolicy.sol +1 -1
  271. package/contracts/mock/Dip.sol +1 -1
  272. package/contracts/oracle/IOracleComponent.sol +2 -1
  273. package/contracts/oracle/Oracle.sol +15 -6
  274. package/contracts/oracle/OracleServiceManager.sol +2 -5
  275. package/contracts/pool/BasicPool.sol +7 -5
  276. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  277. package/contracts/pool/BundleService.sol +174 -34
  278. package/contracts/pool/BundleServiceManager.sol +2 -5
  279. package/contracts/pool/IBundleService.sol +32 -5
  280. package/contracts/pool/IPoolComponent.sol +6 -0
  281. package/contracts/pool/IPoolService.sol +14 -17
  282. package/contracts/pool/Pool.sol +32 -15
  283. package/contracts/pool/PoolService.sol +151 -84
  284. package/contracts/pool/PoolServiceManager.sol +2 -5
  285. package/contracts/product/ApplicationService.sol +49 -53
  286. package/contracts/product/ApplicationServiceManager.sol +2 -2
  287. package/contracts/product/BasicProduct.sol +3 -33
  288. package/contracts/product/BasicProductAuthorization.sol +3 -0
  289. package/contracts/product/ClaimService.sol +13 -39
  290. package/contracts/product/ClaimServiceManager.sol +2 -2
  291. package/contracts/product/IApplicationService.sol +1 -0
  292. package/contracts/product/IClaimService.sol +1 -0
  293. package/contracts/product/IPolicyService.sol +23 -17
  294. package/contracts/product/IProductComponent.sol +1 -0
  295. package/contracts/product/IProductService.sol +1 -0
  296. package/contracts/product/PolicyService.sol +242 -131
  297. package/contracts/product/PolicyServiceManager.sol +2 -5
  298. package/contracts/product/PricingService.sol +5 -1
  299. package/contracts/product/PricingServiceManager.sol +2 -5
  300. package/contracts/product/Product.sol +27 -6
  301. package/contracts/product/ProductService.sol +7 -32
  302. package/contracts/product/ProductServiceManager.sol +2 -5
  303. package/contracts/registry/RegistryService.sol +4 -18
  304. package/contracts/registry/RegistryServiceManager.sol +2 -2
  305. package/contracts/registry/ReleaseRegistry.sol +0 -2
  306. package/contracts/shared/Component.sol +24 -37
  307. package/contracts/shared/ComponentService.sol +72 -14
  308. package/contracts/shared/ComponentServiceManager.sol +2 -2
  309. package/contracts/shared/IComponent.sol +4 -4
  310. package/contracts/shared/IComponentService.sol +15 -9
  311. package/contracts/shared/IInstanceLinkedComponent.sol +9 -3
  312. package/contracts/shared/IService.sol +1 -1
  313. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  314. package/contracts/shared/InstanceLinkedComponent.sol +21 -0
  315. package/contracts/shared/NftOwnable.sol +2 -2
  316. package/contracts/shared/PolicyHolder.sol +2 -5
  317. package/contracts/shared/Service.sol +3 -4
  318. package/contracts/shared/TokenHandler.sol +91 -17
  319. package/contracts/staking/IStaking.sol +1 -1
  320. package/contracts/staking/StakeManagerLib.sol +0 -25
  321. package/contracts/staking/Staking.sol +18 -33
  322. package/contracts/staking/StakingManager.sol +2 -5
  323. package/contracts/staking/StakingReader.sol +6 -9
  324. package/contracts/staking/StakingService.sol +8 -12
  325. package/contracts/staking/StakingServiceManager.sol +2 -2
  326. package/contracts/staking/StakingStore.sol +5 -15
  327. package/contracts/type/Amount.sol +12 -5
  328. package/contracts/type/Blocknumber.sol +7 -1
  329. package/contracts/type/Referral.sol +1 -0
  330. package/contracts/type/Seconds.sol +13 -1
  331. package/contracts/type/Timestamp.sol +11 -1
  332. package/contracts/type/UFixed.sol +29 -10
  333. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  334. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  335. package/package.json +1 -1
  336. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  337. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  338. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  339. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  340. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  341. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  342. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,45 +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
26
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
32
- import {IBundleService} from "./IBundleService.sol";
33
- import {IComponentService} from "../shared/IComponentService.sol";
34
- import {IInstanceService} from "../instance/IInstanceService.sol";
35
- import {IPoolService} from "./IPoolService.sol";
36
- import {IRegistryService} from "../registry/IRegistryService.sol";
37
- import {IStaking} from "../staking/IStaking.sol";
38
- import {InstanceService} from "../instance/InstanceService.sol";
39
27
  import {InstanceReader} from "../instance/InstanceReader.sol";
40
28
  import {InstanceStore} from "../instance/InstanceStore.sol";
41
- import {IComponent} from "../shared/IComponent.sol";
42
- import {IPoolComponent} from "./IPoolComponent.sol";
43
29
 
44
30
  string constant POOL_SERVICE_NAME = "PoolService";
45
31
 
@@ -47,9 +33,6 @@ contract PoolService is
47
33
  ComponentVerifyingService,
48
34
  IPoolService
49
35
  {
50
- using NftIdLib for NftId;
51
- using AmountLib for Amount;
52
-
53
36
  IBundleService internal _bundleService;
54
37
  IComponentService internal _componentService;
55
38
  IInstanceService private _instanceService;
@@ -83,24 +66,20 @@ contract PoolService is
83
66
  registerInterface(type(IPoolService).interfaceId);
84
67
  }
85
68
 
86
-
87
- function setMaxCapitalAmount(Amount maxCapitalAmount)
69
+ /// @inheritdoc IPoolService
70
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
88
71
  external
89
72
  virtual
90
73
  {
91
- /*
92
74
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
93
75
  InstanceReader instanceReader = instance.getInstanceReader();
76
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
94
77
 
95
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
96
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
97
- Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
98
-
99
- poolInfo.maxCapitalAmount = maxCapitalAmount;
78
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
79
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
100
80
  instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
101
81
 
102
- emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
103
- */
82
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
104
83
  }
105
84
 
106
85
  function setBundleOwnerRole(RoleId bundleOwnerRole)
@@ -124,27 +103,7 @@ contract PoolService is
124
103
  emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
125
104
  }
126
105
 
127
-
128
- function setFees(
129
- Fee memory poolFee,
130
- Fee memory stakingFee,
131
- Fee memory performanceFee
132
- )
133
- external
134
- virtual
135
- {
136
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
137
-
138
- IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
139
- poolInfo.poolFee = poolFee;
140
- poolInfo.stakingFee = stakingFee;
141
- poolInfo.performanceFee = performanceFee;
142
-
143
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
144
-
145
- // TODO add logging
146
- }
147
-
106
+ /// @inheritdoc IPoolService
148
107
  function createBundle(
149
108
  address bundleOwner, // initial bundle owner
150
109
  Fee memory fee, // fees deducted from premium that go to bundle owner
@@ -154,24 +113,32 @@ contract PoolService is
154
113
  )
155
114
  external
156
115
  virtual
157
- returns(NftId bundleNftId)
116
+ returns(NftId bundleNftId, Amount netStakedAmount)
158
117
  {
159
118
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
160
- InstanceReader instanceReader = instance.getInstanceReader();
161
119
 
162
- (
163
- Amount stakingFeeAmount,
164
- Amount stakingNetAmount
165
- ) = FeeLib.calculateFee(
166
- _getStakingFee(instanceReader, poolNftId),
120
+ {
121
+ InstanceReader instanceReader = instance.getInstanceReader();
122
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
123
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
124
+ if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
125
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
126
+ }
127
+ }
128
+
129
+
130
+ Amount stakingFeeAmount;
131
+ (stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
132
+ _getStakingFee(instance.getInstanceReader(), poolNftId),
167
133
  stakingAmount);
168
134
 
135
+
169
136
  bundleNftId = _bundleService.create(
170
137
  instance,
171
138
  poolNftId,
172
139
  bundleOwner,
173
140
  fee,
174
- stakingNetAmount,
141
+ netStakedAmount,
175
142
  lifetime,
176
143
  filter);
177
144
 
@@ -179,12 +146,12 @@ contract PoolService is
179
146
  _componentService.increasePoolBalance(
180
147
  instance.getInstanceStore(),
181
148
  poolNftId,
182
- stakingAmount,
149
+ netStakedAmount,
183
150
  stakingFeeAmount);
184
151
 
185
152
  // pool bookkeeping and collect tokens from bundle owner
186
153
  _collectStakingAmount(
187
- instanceReader,
154
+ instance.getInstanceReader(),
188
155
  poolNftId,
189
156
  bundleOwner,
190
157
  stakingAmount);
@@ -198,8 +165,8 @@ contract PoolService is
198
165
  view
199
166
  returns (Fee memory stakingFee)
200
167
  {
201
- NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
202
- return instanceReader.getPoolInfo(productNftId).stakingFee;
168
+ NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
169
+ return instanceReader.getProductInfo(productNftId).stakingFee;
203
170
  }
204
171
 
205
172
  function closeBundle(NftId bundleNftId)
@@ -208,16 +175,121 @@ contract PoolService is
208
175
  {
209
176
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
210
177
 
211
- // TODO book keeping for pool collateral released outside of retention level
178
+ // TODO get performance fee for pool (#477)
212
179
 
213
180
  // releasing collateral in bundle
214
- _bundleService.close(instance, bundleNftId);
215
-
216
- // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
181
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
217
182
 
183
+ _componentService.decreasePoolBalance(
184
+ instance.getInstanceStore(),
185
+ poolNftId,
186
+ unstakedAmount + feeAmount,
187
+ AmountLib.zero());
188
+
218
189
  emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
190
+
191
+ if ((unstakedAmount + feeAmount).gtz()){
192
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
193
+ poolComponentInfo.tokenHandler.distributeTokens(
194
+ poolComponentInfo.wallet,
195
+ getRegistry().ownerOf(bundleNftId),
196
+ unstakedAmount + feeAmount);
197
+ }
198
+ }
199
+
200
+ /// @inheritdoc IPoolService
201
+ function stake(NftId bundleNftId, Amount amount)
202
+ external
203
+ virtual
204
+ // TODO: restricted() (once #462 is done)
205
+ returns(Amount netAmount)
206
+ {
207
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
208
+ InstanceReader instanceReader = instance.getInstanceReader();
209
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
210
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
211
+
212
+ if (bundleInfo.poolNftId != poolNftId) {
213
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
214
+ }
215
+
216
+ {
217
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
218
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
219
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
220
+ }
221
+ }
222
+
223
+ // calculate fees
224
+ Amount feeAmount;
225
+ (
226
+ feeAmount,
227
+ netAmount
228
+ ) = FeeLib.calculateFee(
229
+ _getStakingFee(instanceReader, poolNftId),
230
+ amount);
231
+
232
+ // do all the bookkeeping
233
+ _componentService.increasePoolBalance(
234
+ instance.getInstanceStore(),
235
+ poolNftId,
236
+ netAmount,
237
+ feeAmount);
238
+
239
+ _bundleService.stake(instance, bundleNftId, netAmount);
240
+
241
+ // collect tokens from bundle owner
242
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
243
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
244
+ _collectStakingAmount(
245
+ instanceReader,
246
+ poolNftId,
247
+ bundleOwner,
248
+ amount);
219
249
  }
220
250
 
251
+ /// @inheritdoc IPoolService
252
+ function unstake(NftId bundleNftId, Amount amount)
253
+ external
254
+ virtual
255
+ // TODO: restricted() (once #462 is done)
256
+ returns(Amount netAmount)
257
+ {
258
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
259
+ InstanceReader instanceReader = instance.getInstanceReader();
260
+ InstanceStore instanceStore = instance.getInstanceStore();
261
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
262
+
263
+ if (bundleInfo.poolNftId != poolNftId) {
264
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
265
+ }
266
+
267
+ // call bundle service for bookkeeping and additional checks
268
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
269
+
270
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
271
+ // if amount was max, this was set to the available amount
272
+
273
+ // TODO: handle performance fees (issue #477)
274
+
275
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
276
+ _componentService.decreasePoolBalance(
277
+ instanceStore,
278
+ poolNftId,
279
+ unstakedAmount,
280
+ AmountLib.zero());
281
+
282
+ IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
283
+ address poolWallet = poolComponentInfo.wallet;
284
+ // transfer amount to bundle owner
285
+ address owner = getRegistry().ownerOf(bundleNftId);
286
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
287
+ poolComponentInfo.tokenHandler.distributeTokens(
288
+ poolWallet,
289
+ owner,
290
+ unstakedAmount);
291
+ return unstakedAmount;
292
+ }
221
293
 
222
294
  function processSale(
223
295
  NftId bundleNftId,
@@ -421,7 +493,6 @@ contract PoolService is
421
493
  }
422
494
 
423
495
 
424
- // TODO create (I)TreasuryService that deals with all gif related token transfers
425
496
  /// @dev transfers the specified amount from the bundle owner to the pool's wallet
426
497
  function _collectStakingAmount(
427
498
  InstanceReader instanceReader,
@@ -434,15 +505,11 @@ contract PoolService is
434
505
 
435
506
  // collecting investor token
436
507
  IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
437
- TokenHandler tokenHandler = componentInfo.tokenHandler;
438
508
  address poolWallet = componentInfo.wallet;
439
-
440
- if(amount.gtz()) {
441
- tokenHandler.transfer(
442
- bundleOwner,
443
- poolWallet,
444
- amount);
445
- }
509
+ componentInfo.tokenHandler.collectTokens(
510
+ bundleOwner,
511
+ poolWallet,
512
+ amount);
446
513
  }
447
514
 
448
515
  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