@etherisc/gif-next 0.0.2-e94f4c7-084 → 0.0.2-e964d24-516

Sign up to get free protection for your applications and to get access to all the features.
Files changed (406) hide show
  1. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  2. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +45 -14
  3. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  5. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  7. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  8. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +45 -14
  9. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  10. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +24 -274
  11. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +6 -6
  13. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +252 -2210
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +21 -38
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +352 -2691
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +71 -53
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +233 -67
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -226
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +39 -124
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  32. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  33. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  36. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +6 -6
  38. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  48. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  49. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +57 -31
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +56 -25
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +153 -36
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +56 -25
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1376 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +493 -0
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +230 -89
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +36 -354
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +37 -154
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +53 -22
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +6 -14
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/{components → product}/Product.sol/Product.json +53 -22
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  99. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  100. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -13
  102. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  103. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  104. package/artifacts/contracts/registry/Registry.sol/Registry.json +6 -6
  105. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  106. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +4 -4
  107. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +21 -29
  109. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -40
  111. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  112. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +9 -9
  113. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  115. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  116. package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
  117. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  118. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +38 -7
  119. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  120. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +38 -14
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  123. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +38 -7
  124. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  125. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  126. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  128. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  130. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  132. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  133. package/artifacts/contracts/shared/IService.sol/IService.json +5 -13
  134. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +8 -21
  137. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  138. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  139. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  140. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +20 -33
  141. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -21
  143. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  144. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  145. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  146. package/artifacts/contracts/shared/Service.sol/Service.json +5 -13
  147. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  148. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  149. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  150. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  151. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  152. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  153. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +523 -0
  154. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +628 -0
  156. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  157. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  158. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  159. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  160. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  161. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  162. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  163. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  164. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  165. package/artifacts/contracts/{types → type}/ClaimId.sol/ClaimIdLib.json +5 -5
  166. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  167. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  168. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  169. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  170. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  171. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  172. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  173. package/artifacts/contracts/{types → type}/NftId.sol/NftIdLib.json +5 -5
  174. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  175. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  176. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  177. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  178. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  179. package/artifacts/contracts/{types → type}/PayoutId.sol/PayoutIdLib.json +5 -5
  180. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  181. package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
  182. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  184. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  185. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  186. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  187. package/artifacts/contracts/{types → type}/Seconds.sol/SecondsLib.json +3 -3
  188. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  190. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  191. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +5 -5
  192. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  193. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  194. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  195. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  196. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  197. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  198. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  199. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  200. package/contracts/{components → distribution}/Distribution.sol +15 -14
  201. package/contracts/{instance/service → distribution}/DistributionService.sol +80 -163
  202. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +5 -5
  203. package/contracts/{components → distribution}/IDistributionComponent.sol +7 -7
  204. package/contracts/{instance/service → distribution}/IDistributionService.sol +18 -30
  205. package/contracts/instance/BundleManager.sol +4 -4
  206. package/contracts/instance/IInstance.sol +37 -62
  207. package/contracts/instance/IInstanceService.sol +18 -13
  208. package/contracts/instance/Instance.sol +94 -175
  209. package/contracts/instance/InstanceAccessManager.sol +38 -24
  210. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  211. package/contracts/instance/InstanceReader.sol +68 -17
  212. package/contracts/instance/InstanceService.sol +96 -266
  213. package/contracts/instance/InstanceServiceManager.sol +1 -1
  214. package/contracts/instance/InstanceStore.sol +211 -0
  215. package/contracts/instance/ObjectManager.sol +4 -4
  216. package/contracts/instance/base/IKeyValueStore.sol +5 -5
  217. package/contracts/instance/base/ILifecycle.sol +3 -3
  218. package/contracts/instance/base/KeyValueStore.sol +6 -37
  219. package/contracts/instance/base/Lifecycle.sol +8 -5
  220. package/contracts/instance/module/IAccess.sol +2 -2
  221. package/contracts/instance/module/IBundle.sol +5 -5
  222. package/contracts/instance/module/IComponents.sol +8 -8
  223. package/contracts/instance/module/IDistribution.sol +7 -6
  224. package/contracts/instance/module/IPolicy.sol +12 -12
  225. package/contracts/instance/module/IRisk.sol +1 -1
  226. package/contracts/instance/module/ISetup.sol +4 -4
  227. package/contracts/instance/module/ITreasury.sol +2 -2
  228. package/contracts/{instance/service → pool}/BundleService.sol +84 -145
  229. package/contracts/{instance/service → pool}/BundleServiceManager.sol +5 -5
  230. package/contracts/{instance/service → pool}/IBundleService.sol +41 -25
  231. package/contracts/{components → pool}/IPoolComponent.sol +13 -12
  232. package/contracts/{instance/service → pool}/IPoolService.sol +26 -14
  233. package/contracts/{components → pool}/Pool.sol +18 -18
  234. package/contracts/{instance/service → pool}/PoolService.sol +125 -58
  235. package/contracts/{instance/service → pool}/PoolServiceManager.sol +5 -5
  236. package/contracts/product/ApplicationService.sol +186 -0
  237. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +2 -2
  238. package/contracts/product/ClaimService.sol +437 -0
  239. package/contracts/{instance/service → product}/ClaimServiceManager.sol +2 -2
  240. package/contracts/{instance/service → product}/IApplicationService.sol +12 -28
  241. package/contracts/product/IClaimService.sol +90 -0
  242. package/contracts/product/IPolicyService.sol +80 -0
  243. package/contracts/product/IPricingService.sol +37 -0
  244. package/contracts/{components → product}/IProductComponent.sol +11 -10
  245. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  246. package/contracts/product/PolicyService.sol +376 -0
  247. package/contracts/{instance/service → product}/PolicyServiceManager.sol +5 -5
  248. package/contracts/product/PricingService.sol +275 -0
  249. package/contracts/product/PricingServiceManager.sol +51 -0
  250. package/contracts/{components → product}/Product.sol +37 -33
  251. package/contracts/{instance/service → product}/ProductService.sol +46 -46
  252. package/contracts/{instance/service → product}/ProductServiceManager.sol +5 -5
  253. package/contracts/registry/IRegistry.sol +4 -4
  254. package/contracts/registry/IRegistryService.sol +4 -6
  255. package/contracts/registry/Registry.sol +3 -3
  256. package/contracts/registry/RegistryAccessManager.sol +1 -1
  257. package/contracts/registry/RegistryService.sol +23 -20
  258. package/contracts/registry/RegistryServiceManager.sol +0 -2
  259. package/contracts/registry/ReleaseManager.sol +5 -5
  260. package/contracts/registry/TokenRegistry.sol +2 -2
  261. package/contracts/{components → shared}/Component.sol +26 -8
  262. package/contracts/{instance/base → shared}/ComponentService.sol +63 -34
  263. package/contracts/{components → shared}/IComponent.sol +19 -5
  264. package/contracts/shared/INftOwnable.sol +1 -1
  265. package/contracts/shared/IPolicyHolder.sol +24 -10
  266. package/contracts/shared/IRegistryLinked.sol +0 -1
  267. package/contracts/shared/IService.sol +3 -1
  268. package/contracts/shared/IVersionable.sol +1 -1
  269. package/contracts/shared/NftOwnable.sol +1 -3
  270. package/contracts/shared/PolicyHolder.sol +31 -18
  271. package/contracts/shared/ProxyManager.sol +3 -3
  272. package/contracts/shared/Registerable.sol +12 -11
  273. package/contracts/shared/RegistryLinked.sol +0 -5
  274. package/contracts/shared/Service.sol +3 -3
  275. package/contracts/shared/TokenHandler.sol +4 -2
  276. package/contracts/shared/Versionable.sol +1 -1
  277. package/contracts/staking/IStakingService.sol +102 -0
  278. package/contracts/staking/StakeingServiceManager.sol +37 -0
  279. package/contracts/staking/StakingService.sol +166 -0
  280. package/contracts/{types → type}/Amount.sol +39 -0
  281. package/contracts/{types → type}/Fee.sol +7 -6
  282. package/contracts/{types → type}/NftIdSet.sol +1 -1
  283. package/contracts/{types → type}/ObjectType.sol +5 -1
  284. package/package.json +1 -1
  285. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  286. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  287. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  288. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  289. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  290. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  291. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  292. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  293. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  294. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  295. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  296. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1060
  297. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  298. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -681
  299. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  300. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1289
  301. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  302. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -725
  303. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  304. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1040
  305. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  306. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -685
  307. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  308. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1774
  309. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  310. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -793
  311. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  312. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  313. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  314. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  315. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  316. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  317. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  318. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  319. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1543
  320. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  321. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -741
  322. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  323. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1449
  324. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  325. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -709
  326. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  327. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  328. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  329. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  330. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  331. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  332. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  333. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  334. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  335. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  336. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  337. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  338. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  339. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  340. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  341. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  342. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  343. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  344. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  345. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  346. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  347. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  348. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  349. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  350. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -209
  351. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  352. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  353. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  354. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  355. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  356. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  357. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  358. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  359. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  360. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  361. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  362. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  363. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  364. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  365. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  366. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  367. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  368. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  369. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  370. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  371. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  372. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  373. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  374. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  375. package/contracts/instance/service/ApplicationService.sol +0 -355
  376. package/contracts/instance/service/ClaimService.sol +0 -239
  377. package/contracts/instance/service/IClaimService.sol +0 -92
  378. package/contracts/instance/service/IPolicyService.sol +0 -139
  379. package/contracts/instance/service/PolicyService.sol +0 -571
  380. package/contracts/shared/ContractDeployerLib.sol +0 -72
  381. package/contracts/test/TestFee.sol +0 -25
  382. package/contracts/test/TestRegisterable.sol +0 -18
  383. package/contracts/test/TestRoleId.sol +0 -14
  384. package/contracts/test/TestService.sol +0 -25
  385. package/contracts/test/TestToken.sol +0 -26
  386. package/contracts/test/TestVersion.sol +0 -44
  387. package/contracts/test/TestVersionable.sol +0 -17
  388. package/contracts/test/Usdc.sol +0 -26
  389. package/contracts/types/ChainId.sol +0 -38
  390. package/contracts/types/NumberId.sol +0 -52
  391. /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
  392. /package/contracts/{types → type}/AddressSet.sol +0 -0
  393. /package/contracts/{types → type}/Blocknumber.sol +0 -0
  394. /package/contracts/{types → type}/ClaimId.sol +0 -0
  395. /package/contracts/{types → type}/DistributorType.sol +0 -0
  396. /package/contracts/{types → type}/Key32.sol +0 -0
  397. /package/contracts/{types → type}/NftId.sol +0 -0
  398. /package/contracts/{types → type}/PayoutId.sol +0 -0
  399. /package/contracts/{types → type}/Referral.sol +0 -0
  400. /package/contracts/{types → type}/RiskId.sol +0 -0
  401. /package/contracts/{types → type}/RoleId.sol +0 -0
  402. /package/contracts/{types → type}/Seconds.sol +0 -0
  403. /package/contracts/{types → type}/StateId.sol +0 -0
  404. /package/contracts/{types → type}/Timestamp.sol +0 -0
  405. /package/contracts/{types → type}/UFixed.sol +0 -0
  406. /package/contracts/{types → type}/Version.sol +0 -0
@@ -1,20 +1,21 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {Amount} from "../../types/Amount.sol";
5
- import {Fee} from "../../types/Fee.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
- import {IBundle} from "../module/IBundle.sol";
8
- import {IInstance} from "../../instance/IInstance.sol";
9
- import {IPolicy} from "../module/IPolicy.sol";
10
- import {IService} from "../../shared/IService.sol";
11
- import {RoleId} from "../../types/RoleId.sol";
12
- import {Seconds} from "../../types/Seconds.sol";
13
- import {StateId} from "../../types/StateId.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {PayoutId} from "../type/PayoutId.sol";
8
+ import {IBundle} from "../instance/module/IBundle.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {IPolicy} from "../instance/module/IPolicy.sol";
11
+ import {IService} from "../shared/IService.sol";
12
+ import {RoleId} from "../type/RoleId.sol";
13
+ import {Seconds} from "../type/Seconds.sol";
14
+ import {StateId} from "../type/StateId.sol";
14
15
 
15
16
  interface IPoolService is IService {
16
17
 
17
- event LogPoolServiceMaxCapitalAmountUpdated(NftId poolNftId, uint256 previousMaxCapitalAmount, uint256 currentMaxCapitalAmount);
18
+ event LogPoolServiceMaxCapitalAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
18
19
  event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
19
20
 
20
21
  event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
@@ -32,7 +33,7 @@ interface IPoolService is IService {
32
33
  function setBundleOwnerRole(RoleId bundleOwnerRole) external;
33
34
 
34
35
  /// @dev sets the max capital amount for the calling pool
35
- function setMaxCapitalAmount(uint256 maxCapitalAmount) external;
36
+ function setMaxCapitalAmount(Amount maxCapitalAmount) external;
36
37
 
37
38
  /// @dev set pool sepecific fees
38
39
  function setFees(
@@ -52,7 +53,7 @@ interface IPoolService is IService {
52
53
  NftId productNftId,
53
54
  NftId applicationNftId,
54
55
  IPolicy.PolicyInfo memory applicationInfo,
55
- uint256 premiumAmount
56
+ Amount premiumAmount
56
57
  ) external;
57
58
 
58
59
 
@@ -65,6 +66,17 @@ interface IPoolService is IService {
65
66
  ) external;
66
67
 
67
68
 
69
+ /// @dev reduces the locked collateral in the bundle associated with the specified policy
70
+ /// every payout of a policy reduces the collateral by the payout amount
71
+ /// may only be called by the claim service for unlocked pool components
72
+ function reduceCollateral(
73
+ IInstance instance,
74
+ NftId policyNftId,
75
+ IPolicy.PolicyInfo memory policyInfo,
76
+ Amount payoutAmount
77
+ ) external;
78
+
79
+
68
80
  /// @dev create a new bundle for the provided parameters
69
81
  /// staking fees will be deducted by the pool service from the staking amount
70
82
  /// may only be called by registered and unlocked pool components
@@ -87,7 +99,7 @@ interface IPoolService is IService {
87
99
  function closeBundle(NftId bundleNftId) external;
88
100
 
89
101
  /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
90
- function processSale(NftId bundleNftId, IPolicy.Premium memory premium, uint256 actualAmountTransferred) external;
102
+ function processSale(NftId bundleNftId, IPolicy.Premium memory premium, Amount actualAmountTransferred) external;
91
103
 
92
104
  /// @dev increase stakes for bundle
93
105
  /// staking fees will be deducted by the pool service from the staking amount
@@ -1,19 +1,19 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount, AmountLib} from "../types/Amount.sol";
5
- import {Component} from "./Component.sol";
6
- import {Fee, FeeLib} from "../types/Fee.sol";
7
- import {IBundleService} from "../instance/service/IBundleService.sol";
4
+ import {Amount, AmountLib} from "../type/Amount.sol";
5
+ import {Component} from "../shared/Component.sol";
6
+ import {Fee, FeeLib} from "../type/Fee.sol";
7
+ import {IBundleService} from "./IBundleService.sol";
8
8
  import {IPoolComponent} from "./IPoolComponent.sol";
9
- import {IPoolService} from "../instance/service/IPoolService.sol";
9
+ import {IPoolService} from "./IPoolService.sol";
10
10
  import {IComponents} from "../instance/module/IComponents.sol";
11
- import {NftId, NftIdLib} from "../types/NftId.sol";
12
- import {BUNDLE, POOL} from "../types/ObjectType.sol";
13
- import {RoleId, PUBLIC_ROLE} from "../types/RoleId.sol";
14
- import {Seconds} from "../types/Seconds.sol";
11
+ import {NftId, NftIdLib} from "../type/NftId.sol";
12
+ import {BUNDLE, POOL} from "../type/ObjectType.sol";
13
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
14
+ import {Seconds} from "../type/Seconds.sol";
15
15
  import {TokenHandler} from "../shared/TokenHandler.sol";
16
- import {UFixed, UFixedLib} from "../types/UFixed.sol";
16
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
17
17
 
18
18
  abstract contract Pool is
19
19
  Component,
@@ -69,7 +69,7 @@ abstract contract Pool is
69
69
 
70
70
  function stake(
71
71
  NftId bundleNftId,
72
- uint256 amount
72
+ Amount amount
73
73
  )
74
74
  public
75
75
  virtual
@@ -82,7 +82,7 @@ abstract contract Pool is
82
82
 
83
83
  function unstake(
84
84
  NftId bundleNftId,
85
- uint256 amount
85
+ Amount amount
86
86
  )
87
87
  public
88
88
  virtual
@@ -149,7 +149,7 @@ abstract contract Pool is
149
149
  }
150
150
 
151
151
 
152
- function setMaxCapitalAmount(uint256 maxCapitalAmount)
152
+ function setMaxCapitalAmount(Amount maxCapitalAmount)
153
153
  public
154
154
  virtual
155
155
  restricted()
@@ -189,7 +189,7 @@ abstract contract Pool is
189
189
  bytes memory applicationData,
190
190
  NftId bundleNftId,
191
191
  bytes memory bundleFilter,
192
- uint256 collateralizationAmount
192
+ Amount collateralizationAmount
193
193
  )
194
194
  public
195
195
  virtual
@@ -218,7 +218,7 @@ abstract contract Pool is
218
218
  bytes memory applicationData,
219
219
  NftId bundleNftId,
220
220
  bytes memory bundleFilter,
221
- uint256 collateralizationAmount
221
+ Amount collateralizationAmount
222
222
  )
223
223
  public
224
224
  view
@@ -279,9 +279,9 @@ abstract contract Pool is
279
279
  IComponents.PoolInfo(
280
280
  NftIdLib.zero(), // will be set when GIF registers the related product
281
281
  PUBLIC_ROLE(), // bundleOwnerRole
282
- type(uint256).max, // maxCapitalAmount,
283
- 0, // initial balance amount
284
- 0, // initial fee amount
282
+ AmountLib.max(), // maxCapitalAmount,
283
+ AmountLib.zero(), // initial balance amount
284
+ AmountLib.zero(), // initial fee amount
285
285
  isNftInterceptor(), // isInterceptingBundleTransfers
286
286
  false, // isExternallyManaged,
287
287
  false, // isVerifyingApplications,
@@ -1,41 +1,41 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {Pool} from "../../components/Pool.sol";
5
- import {IRegistry} from "../../registry/IRegistry.sol";
6
- import {IInstance} from "../../instance/IInstance.sol";
7
- import {IBundle} from "../../instance/module/IBundle.sol";
8
- import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
- import {IComponents} from "../module/IComponents.sol";
10
- import {IPolicy} from "../module/IPolicy.sol";
11
-
12
- import {IVersionable} from "../../shared/IVersionable.sol";
13
- import {Versionable} from "../../shared/Versionable.sol";
14
- import {INftOwnable} from "../../shared/INftOwnable.sol";
15
-
16
- import {Amount, AmountLib} from "../../types/Amount.sol";
17
- import {Fee, FeeLib} from "../../types/Fee.sol";
18
- import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
19
- import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
20
- import {PUBLIC_ROLE, POOL_OWNER_ROLE, POLICY_SERVICE_ROLE, RoleId} from "../../types/RoleId.sol";
21
- import {Fee, FeeLib} from "../../types/Fee.sol";
22
- import {Version, VersionLib} from "../../types/Version.sol";
23
- import {KEEP_STATE, StateId} from "../../types/StateId.sol";
24
- import {Seconds} from "../../types/Seconds.sol";
25
- import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
26
- import {Version, VersionLib} from "../../types/Version.sol";
27
-
28
- import {IService} from "../../shared/IService.sol";
29
- import {Service} from "../../shared/Service.sol";
30
- import {BundleManager} from "../BundleManager.sol";
31
- import {ComponentService} from "../base/ComponentService.sol";
4
+ import {Pool} from "./Pool.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IInstance} from "../instance/IInstance.sol";
7
+ import {IBundle} from "../instance/module/IBundle.sol";
8
+ import {TokenHandler} from "../instance/module/ITreasury.sol";
9
+ import {IComponents} from "../instance/module/IComponents.sol";
10
+ import {IPolicy} from "../instance/module/IPolicy.sol";
11
+
12
+ import {IVersionable} from "../shared/IVersionable.sol";
13
+ import {Versionable} from "../shared/Versionable.sol";
14
+ import {INftOwnable} from "../shared/INftOwnable.sol";
15
+
16
+ import {Amount, AmountLib} from "../type/Amount.sol";
17
+ import {Fee, FeeLib} from "../type/Fee.sol";
18
+ import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
19
+ import {ObjectType, POOL, BUNDLE} from "../type/ObjectType.sol";
20
+ import {PUBLIC_ROLE, POOL_OWNER_ROLE, POLICY_SERVICE_ROLE, RoleId} from "../type/RoleId.sol";
21
+ import {Fee, FeeLib} from "../type/Fee.sol";
22
+ import {Version, VersionLib} from "../type/Version.sol";
23
+ import {KEEP_STATE, StateId} from "../type/StateId.sol";
24
+ import {Seconds} from "../type/Seconds.sol";
25
+ import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
26
+ import {Version, VersionLib} from "../type/Version.sol";
27
+
28
+ import {IService} from "../shared/IService.sol";
29
+ import {Service} from "../shared/Service.sol";
30
+ import {BundleManager} from "../instance/BundleManager.sol";
31
+ import {ComponentService} from "../shared/ComponentService.sol";
32
32
  import {IBundleService} from "./IBundleService.sol";
33
33
  import {IPoolService} from "./IPoolService.sol";
34
- import {IRegistryService} from "../../registry/IRegistryService.sol";
35
- import {InstanceService} from "../InstanceService.sol";
36
- import {InstanceReader} from "../InstanceReader.sol";
37
- import {IComponent} from "../../components/IComponent.sol";
38
- import {IPoolComponent} from "../../components/IPoolComponent.sol";
34
+ import {IRegistryService} from "../registry/IRegistryService.sol";
35
+ import {InstanceService} from "../instance/InstanceService.sol";
36
+ import {InstanceReader} from "../instance/InstanceReader.sol";
37
+ import {IComponent} from "../shared/IComponent.sol";
38
+ import {IPoolComponent} from "./IPoolComponent.sol";
39
39
 
40
40
  string constant POOL_SERVICE_NAME = "PoolService";
41
41
 
@@ -96,7 +96,7 @@ contract PoolService is
96
96
  componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
97
97
 
98
98
  // save amended component info with instance
99
- instance.createPoolSetup(poolNftId, componentInfo);
99
+ instance.getInstanceStore().createPoolSetup(poolNftId, componentInfo);
100
100
 
101
101
  bytes4[][] memory selectors = new bytes4[][](2);
102
102
  selectors[0] = new bytes4[](1);
@@ -118,20 +118,20 @@ contract PoolService is
118
118
  }
119
119
 
120
120
 
121
- function setMaxCapitalAmount(uint256 maxCapitalAmount)
121
+ function setMaxCapitalAmount(Amount maxCapitalAmount)
122
122
  external
123
123
  virtual
124
124
  {
125
- (NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
125
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
126
126
  InstanceReader instanceReader = instance.getInstanceReader();
127
127
 
128
128
  IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
129
129
  IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
130
- uint256 previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
130
+ Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
131
131
 
132
132
  poolInfo.maxCapitalAmount = maxCapitalAmount;
133
133
  componentInfo.data = abi.encode(poolInfo);
134
- instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
134
+ instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
135
135
 
136
136
  emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
137
137
  }
@@ -140,7 +140,7 @@ contract PoolService is
140
140
  external
141
141
  virtual
142
142
  {
143
- (NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
143
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
144
144
  InstanceReader instanceReader = instance.getInstanceReader();
145
145
 
146
146
  IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
@@ -153,7 +153,7 @@ contract PoolService is
153
153
 
154
154
  poolInfo.bundleOwnerRole = bundleOwnerRole;
155
155
  componentInfo.data = abi.encode(poolInfo);
156
- instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
156
+ instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
157
157
 
158
158
  emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
159
159
  }
@@ -167,7 +167,7 @@ contract PoolService is
167
167
  external
168
168
  virtual
169
169
  {
170
- (NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
170
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
171
171
  InstanceReader instanceReader = instance.getInstanceReader();
172
172
 
173
173
  IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
@@ -177,7 +177,7 @@ contract PoolService is
177
177
  poolInfo.stakingFee = stakingFee;
178
178
  poolInfo.performanceFee = performanceFee;
179
179
  componentInfo.data = abi.encode(poolInfo);
180
- instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
180
+ instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
181
181
 
182
182
  // TODO add logging
183
183
  }
@@ -194,21 +194,25 @@ contract PoolService is
194
194
  virtual
195
195
  returns(NftId bundleNftId)
196
196
  {
197
- (NftId poolNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
197
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
198
198
  InstanceReader instanceReader = instance.getInstanceReader();
199
199
 
200
- // TODO add implementation that takes care of staking fees
201
- Amount stakingAfterFeesAmount = stakingAmount;
200
+ // pool fee book keeping
201
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
202
+ Amount stakingNetAmount = _processStakingFees(componentInfo, stakingAmount);
202
203
 
203
204
  bundleNftId = _bundleService.create(
204
205
  instance,
205
206
  poolNftId,
206
207
  owner,
207
208
  fee,
208
- stakingAfterFeesAmount,
209
+ stakingNetAmount,
209
210
  lifetime,
210
211
  filter);
211
212
 
213
+ // collect tokens from bundle owner
214
+ _transferStakingAmount(componentInfo, owner, stakingAmount);
215
+
212
216
  emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
213
217
  }
214
218
 
@@ -217,7 +221,7 @@ contract PoolService is
217
221
  external
218
222
  virtual
219
223
  {
220
- (NftId poolNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
224
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
221
225
 
222
226
  // TODO book keeping for pool collateral released outside of retention level
223
227
 
@@ -232,7 +236,7 @@ contract PoolService is
232
236
  function processSale(
233
237
  NftId bundleNftId,
234
238
  IPolicy.Premium memory premium,
235
- uint256 actualAmountTransferred
239
+ Amount actualAmountTransferred
236
240
  )
237
241
  external
238
242
  virtual
@@ -245,16 +249,16 @@ contract PoolService is
245
249
 
246
250
  Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
247
251
  Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
248
- Amount expectedTransferAmount = AmountLib.toAmount(premium.netPremiumAmount).add(poolFeeAmount).add(bundleFeeAmount);
249
- if (! AmountLib.toAmount(actualAmountTransferred).eq(expectedTransferAmount)) {
250
- revert ErrorPoolServiceInvalidTransferAmount(expectedTransferAmount, AmountLib.toAmount(actualAmountTransferred));
252
+ Amount expectedTransferAmount = AmountLib.toAmount(premium.netPremiumAmount) + poolFeeAmount + bundleFeeAmount;
253
+ if (!(actualAmountTransferred == expectedTransferAmount)) {
254
+ revert ErrorPoolServiceInvalidTransferAmount(expectedTransferAmount, actualAmountTransferred);
251
255
  }
252
256
 
253
257
  // update pool fee balance
254
258
  if (poolFeeAmount.gtz()) {
255
259
  IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolObjectInfo.nftId);
256
260
  poolComponentInfo.feeAmount = poolComponentInfo.feeAmount.add(poolFeeAmount);
257
- instance.updatePoolSetup(poolObjectInfo.nftId, poolComponentInfo, KEEP_STATE());
261
+ instance.getInstanceStore().updatePoolSetup(poolObjectInfo.nftId, poolComponentInfo, KEEP_STATE());
258
262
  }
259
263
 
260
264
  if (bundleFeeAmount.gtz()) {
@@ -267,7 +271,7 @@ contract PoolService is
267
271
  NftId productNftId,
268
272
  NftId applicationNftId,
269
273
  IPolicy.PolicyInfo memory applicationInfo,
270
- uint256 premiumAmount // premium amount after product and distribution fees
274
+ Amount premiumAmount // premium amount after product and distribution fees
271
275
  )
272
276
  external
273
277
  virtual
@@ -288,10 +292,10 @@ contract PoolService is
288
292
  IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
289
293
 
290
294
  // TODO add correct required collateral calculation (collateralization level mibht be != 1, retention level might be < 1)
291
- uint256 collateralAmount = applicationInfo.sumInsuredAmount;
295
+ Amount collateralAmount = applicationInfo.sumInsuredAmount;
292
296
 
293
297
  // TODO add correct net premium calculation (pool fee might be > 0)
294
- uint256 premiumAfterPoolFeeAmount = premiumAmount;
298
+ Amount premiumAfterPoolFeeAmount = premiumAmount;
295
299
 
296
300
  // lock collateral amount from involvedd bundle
297
301
  _bundleService.lockCollateral(
@@ -314,6 +318,24 @@ contract PoolService is
314
318
  }
315
319
 
316
320
 
321
+ function reduceCollateral(
322
+ IInstance instance,
323
+ NftId policyNftId,
324
+ IPolicy.PolicyInfo memory policyInfo,
325
+ Amount payoutAmount
326
+ )
327
+ external
328
+ virtual
329
+ // TODO add restricted and granting for claim service
330
+ {
331
+ _bundleService.releaseCollateral(
332
+ instance,
333
+ policyNftId,
334
+ policyInfo.bundleNftId,
335
+ payoutAmount);
336
+ }
337
+
338
+
317
339
  /// @dev releases the remaining collateral linked to the specified policy
318
340
  /// may only be called by the policy service for unlocked pool components
319
341
  function releaseCollateral(
@@ -325,12 +347,57 @@ contract PoolService is
325
347
  virtual
326
348
  // TODO add restricted and granting for policy service
327
349
  {
328
- // release collateral from involved bundle
329
350
  _bundleService.releaseCollateral(
330
351
  instance,
331
352
  policyNftId,
332
353
  policyInfo.bundleNftId,
333
- policyInfo.sumInsuredAmount);
354
+ policyInfo.sumInsuredAmount - policyInfo.claimAmount);
355
+
356
+ _bundleService.unlinkPolicy(
357
+ instance,
358
+ policyNftId);
359
+ }
360
+
361
+
362
+ function _processStakingFees(
363
+ IComponents.ComponentInfo memory componentInfo,
364
+ Amount stakingAmount
365
+ )
366
+ internal
367
+ returns (Amount stakingNetAmount)
368
+ {
369
+ stakingNetAmount = stakingAmount;
370
+
371
+ // check if any staking fees apply
372
+ Fee memory stakingFee = abi.decode(componentInfo.data, (IComponents.PoolInfo)).stakingFee;
373
+ if (FeeLib.gtz(stakingFee)) {
374
+ (Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
375
+ stakingNetAmount = netAmount;
376
+
377
+ // TODO update fee balance for pool
378
+ }
379
+ }
380
+
381
+
382
+ // TODO create (I)TreasuryService that deals with all gif related token transfers
383
+ /// @dev transfers the specified amount from the bundle owner to the pool's wallet
384
+ function _transferStakingAmount(
385
+ IComponents.ComponentInfo memory componentInfo,
386
+ address bundleOwner,
387
+ Amount stakingAmount
388
+ )
389
+ internal
390
+ {
391
+ TokenHandler tokenHandler = componentInfo.tokenHandler;
392
+ address poolWallet = componentInfo.wallet;
393
+
394
+ if(stakingAmount.gtz()) {
395
+ tokenHandler.transfer(
396
+ bundleOwner,
397
+ poolWallet,
398
+ stakingAmount
399
+ );
400
+ }
334
401
  }
335
402
 
336
- }
403
+ }
@@ -1,12 +1,12 @@
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 "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/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 "../../types/ObjectType.sol";
7
+ import {Registry} from "../registry/Registry.sol";
8
+ import {RegistryService} from "../registry/RegistryService.sol";
9
+ import {REGISTRY} from "../type/ObjectType.sol";
10
10
 
11
11
  contract PoolServiceManager is ProxyManager {
12
12