@etherisc/gif-next 0.0.2-b89a442-717 → 0.0.2-b8e869c-076

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 (394) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +85 -101
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -75
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +182 -74
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +54 -38
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +71 -0
  31. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  32. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  33. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  34. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
  35. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  36. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
  37. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  38. package/artifacts/contracts/instance/Instance.sol/Instance.json +9 -9
  39. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  40. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +75 -75
  41. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  42. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
  43. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  44. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +80 -122
  45. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  46. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +21 -21
  47. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  48. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
  49. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +72 -194
  51. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  53. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  55. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  56. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  58. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
  60. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  66. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  67. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  68. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  69. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -88
  70. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  71. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  72. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  73. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  74. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -37
  75. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  76. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -72
  78. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  80. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  82. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  83. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +54 -136
  84. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  85. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  86. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  87. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +394 -62
  88. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -26
  90. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  91. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  92. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  93. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -94
  94. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +194 -54
  96. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  97. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -132
  98. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +262 -90
  100. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -19
  102. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  103. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +21 -32
  104. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +9 -17
  106. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  107. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -75
  108. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  109. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  110. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -58
  112. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +30 -30
  114. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  115. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  116. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
  118. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +188 -108
  120. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  122. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -37
  123. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  124. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  125. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +254 -174
  127. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +42 -26
  129. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
  131. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
  133. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  134. package/artifacts/contracts/product/Product.sol/Product.json +19 -75
  135. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  136. package/artifacts/contracts/product/{ProductService.sol/ProductService.json → RiskService.sol/RiskService.json} +4 -17
  137. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/{ProductServiceManager.sol/ProductServiceManager.json → RiskServiceManager.sol/RiskServiceManager.json} +12 -12
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  140. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  141. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  142. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  143. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  144. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  145. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  146. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  147. package/artifacts/contracts/registry/Registry.sol/Registry.json +95 -23
  148. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  149. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +88 -88
  150. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  151. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  152. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  154. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  156. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  157. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  158. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  159. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  160. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  161. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  162. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  163. package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
  164. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +255 -62
  166. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -32
  168. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  171. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
  175. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  183. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  184. package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
  185. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  186. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -75
  187. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  188. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  189. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  190. package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
  191. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  193. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  195. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  197. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  198. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  199. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  200. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  201. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  202. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  203. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  204. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  205. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
  206. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  207. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +40 -113
  209. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  210. package/artifacts/contracts/staking/Staking.sol/Staking.json +48 -112
  211. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  213. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +25 -25
  215. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  216. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  217. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
  219. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
  221. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +20 -15
  223. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  224. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -2
  225. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  226. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  227. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  228. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  229. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  230. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  232. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  234. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  236. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  237. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  238. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  240. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  241. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  242. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  244. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  246. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  248. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  250. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  252. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  254. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  256. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  262. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  264. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  266. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  268. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  270. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  271. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  272. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  273. package/artifacts/contracts/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
  274. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  275. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  276. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  277. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  278. package/contracts/authorization/Authorization.sol +0 -1
  279. package/contracts/distribution/BasicDistribution.sol +4 -15
  280. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  281. package/contracts/distribution/Distribution.sol +22 -10
  282. package/contracts/distribution/DistributionService.sol +47 -27
  283. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  284. package/contracts/distribution/IDistributionComponent.sol +8 -4
  285. package/contracts/distribution/IDistributionService.sol +10 -0
  286. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  287. package/contracts/instance/IInstance.sol +11 -34
  288. package/contracts/instance/IInstanceService.sol +5 -5
  289. package/contracts/instance/Instance.sol +11 -36
  290. package/contracts/instance/InstanceAdmin.sol +25 -6
  291. package/contracts/instance/InstanceAuthorizationV3.sol +13 -11
  292. package/contracts/instance/InstanceReader.sol +10 -7
  293. package/contracts/instance/InstanceService.sol +60 -36
  294. package/contracts/instance/InstanceServiceManager.sol +2 -6
  295. package/contracts/instance/InstanceStore.sol +2 -1
  296. package/contracts/instance/base/ObjectLifecycle.sol +2 -3
  297. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
  298. package/contracts/instance/module/IBundle.sol +1 -1
  299. package/contracts/instance/module/IComponents.sol +1 -7
  300. package/contracts/instance/module/IDistribution.sol +0 -1
  301. package/contracts/instance/module/IPolicy.sol +1 -1
  302. package/contracts/mock/Dip.sol +1 -1
  303. package/contracts/oracle/IOracleComponent.sol +2 -1
  304. package/contracts/oracle/Oracle.sol +15 -6
  305. package/contracts/oracle/OracleServiceManager.sol +2 -5
  306. package/contracts/pool/BasicPool.sol +7 -5
  307. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  308. package/contracts/pool/BundleService.sol +181 -41
  309. package/contracts/pool/BundleServiceManager.sol +2 -5
  310. package/contracts/pool/IBundleService.sol +33 -5
  311. package/contracts/pool/IPoolComponent.sol +6 -0
  312. package/contracts/pool/IPoolService.sol +37 -24
  313. package/contracts/pool/Pool.sol +32 -15
  314. package/contracts/pool/PoolService.sol +174 -85
  315. package/contracts/pool/PoolServiceManager.sol +2 -5
  316. package/contracts/product/ApplicationService.sol +49 -53
  317. package/contracts/product/ApplicationServiceManager.sol +2 -2
  318. package/contracts/product/BasicProduct.sol +3 -33
  319. package/contracts/product/BasicProductAuthorization.sol +3 -0
  320. package/contracts/product/ClaimService.sol +13 -39
  321. package/contracts/product/ClaimServiceManager.sol +2 -2
  322. package/contracts/product/IApplicationService.sol +1 -0
  323. package/contracts/product/IClaimService.sol +1 -0
  324. package/contracts/product/IPolicyService.sol +23 -17
  325. package/contracts/product/IProductComponent.sol +1 -0
  326. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  327. package/contracts/product/PolicyService.sol +242 -133
  328. package/contracts/product/PolicyServiceManager.sol +2 -5
  329. package/contracts/product/PricingService.sol +5 -1
  330. package/contracts/product/PricingServiceManager.sol +2 -5
  331. package/contracts/product/Product.sol +36 -18
  332. package/contracts/product/{ProductService.sol → RiskService.sol} +10 -37
  333. package/contracts/product/RiskServiceManager.sol +39 -0
  334. package/contracts/registry/IRegistry.sol +26 -13
  335. package/contracts/registry/IRegistryService.sol +6 -6
  336. package/contracts/registry/Registry.sol +80 -82
  337. package/contracts/registry/RegistryAdmin.sol +33 -24
  338. package/contracts/registry/RegistryService.sol +4 -18
  339. package/contracts/registry/RegistryServiceManager.sol +2 -2
  340. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +48 -50
  341. package/contracts/registry/ServiceAuthorizationV3.sol +5 -5
  342. package/contracts/registry/TokenRegistry.sol +2 -2
  343. package/contracts/shared/Component.sol +24 -37
  344. package/contracts/shared/ComponentService.sol +81 -21
  345. package/contracts/shared/ComponentServiceManager.sol +2 -2
  346. package/contracts/shared/IComponent.sol +4 -4
  347. package/contracts/shared/IComponentService.sol +15 -9
  348. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  349. package/contracts/shared/IService.sol +1 -1
  350. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  351. package/contracts/shared/InstanceLinkedComponent.sol +21 -0
  352. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  353. package/contracts/shared/NftOwnable.sol +2 -2
  354. package/contracts/shared/PolicyHolder.sol +2 -5
  355. package/contracts/shared/Service.sol +3 -4
  356. package/contracts/shared/TokenHandler.sol +100 -19
  357. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  358. package/contracts/staking/IStaking.sol +1 -2
  359. package/contracts/staking/IStakingService.sol +12 -5
  360. package/contracts/staking/StakeManagerLib.sol +0 -25
  361. package/contracts/staking/Staking.sol +21 -37
  362. package/contracts/staking/StakingManager.sol +2 -6
  363. package/contracts/staking/StakingReader.sol +12 -16
  364. package/contracts/staking/StakingService.sol +8 -12
  365. package/contracts/staking/StakingServiceManager.sol +2 -2
  366. package/contracts/staking/StakingStore.sol +12 -22
  367. package/contracts/type/Amount.sol +12 -5
  368. package/contracts/type/Blocknumber.sol +7 -1
  369. package/contracts/type/ObjectType.sol +3 -7
  370. package/contracts/type/Referral.sol +1 -0
  371. package/contracts/type/Seconds.sol +13 -1
  372. package/contracts/type/Timestamp.sol +11 -1
  373. package/contracts/type/UFixed.sol +29 -10
  374. package/contracts/type/Version.sol +3 -1
  375. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  376. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  377. package/package.json +3 -3
  378. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  379. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  380. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  381. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  382. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  383. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  384. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  385. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  386. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  387. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  388. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  389. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  390. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  391. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  392. package/contracts/product/ProductServiceManager.sol +0 -42
  393. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  394. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -26,6 +26,15 @@ interface IBundleService is IService {
26
26
 
27
27
  error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
28
 
29
+ error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
30
+
31
+ error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
32
+
33
+ error ErrorBundleServiceExtensionLifetimeIsZero();
34
+
35
+ event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
36
+ event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
37
+
29
38
  /// @dev create a new bundle for the specified attributes
30
39
  /// may only be called by pool service
31
40
  function create(
@@ -41,11 +50,20 @@ interface IBundleService is IService {
41
50
  returns(NftId bundleNftId); // the nft id of the newly created bundle
42
51
 
43
52
 
44
- /// @dev increase bundle stakes by the specified amount
45
- /// may only be called by the bundle owner
46
- // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
53
+ /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
54
+ /// may only be called by the pool service
55
+ function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
56
+
57
+ /// @dev decrease bundle stakes by the specified amount
58
+ /// may only be called by the pool service
59
+ /// @param instance the instance relevant for the bundle
60
+ /// @param bundleNftId the bundle nft id
61
+ /// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
62
+ /// @return unstakedAmount the effective unstaked amount
63
+ function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
47
64
 
48
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
65
+ /// @dev extend the lifetime of the bundle by the specified time in seconds
66
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
49
67
 
50
68
  /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
51
69
  /// only active bundles may be locked
@@ -61,10 +79,12 @@ interface IBundleService is IService {
61
79
  /// only open bundles (active or locked) may be closed
62
80
  /// to close a bundle it may not have any non-closed polices attached to it
63
81
  /// may only be called by registered and unlocked pool components
82
+ /// @return balanceAmount the unstaked amount that was remaining in the bundle
83
+ /// @return feeAmount the fee amount that was remaining for the bundle
64
84
  function close(
65
85
  IInstance instance,
66
86
  NftId bundleNftId
67
- ) external;
87
+ ) external returns (Amount balanceAmount, Amount feeAmount);
68
88
 
69
89
  /// @dev set bundle fee to provided value
70
90
  /// may only be called by registered and unlocked pool components
@@ -103,4 +123,12 @@ interface IBundleService is IService {
103
123
  IInstance instance,
104
124
  NftId policyNftId
105
125
  ) external;
126
+
127
+ // FIXME: move to pool service
128
+ /// @dev Withdraw bundle feeds for the given bundle
129
+ /// @param bundleNftId the bundle Nft Id
130
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
131
+ /// @return withdrawnAmount the effective withdrawn amount
132
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
133
+
106
134
  }
@@ -46,6 +46,12 @@ interface IPoolComponent is IInstanceLinkedComponent {
46
46
  view
47
47
  returns (bool isMatching);
48
48
 
49
+ /// @dev Withdraw bundle feeds for the given bundle
50
+ /// @param bundleNftId the bundle Nft Id
51
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
52
+ /// @return withdrawnAmount the effective withdrawn amount
53
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
54
+
49
55
  /// @dev returns initial pool specific infos for this pool
50
56
  function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
51
57
 
@@ -17,29 +17,26 @@ import {UFixed} from "../type/UFixed.sol";
17
17
 
18
18
  interface IPoolService is IService {
19
19
 
20
- event LogPoolServiceMaxCapitalAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
20
+ event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
21
21
  event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
22
22
 
23
23
  event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
24
24
  event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
25
25
 
26
+ event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
27
+ event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
28
+
26
29
  error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
27
30
  error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
28
-
31
+ error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
32
+ error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
33
+
29
34
  /// @dev defines the required role for bundle owners for the calling pool
30
35
  /// default implementation returns PUBLIC ROLE
31
36
  function setBundleOwnerRole(RoleId bundleOwnerRole) external;
32
37
 
33
- /// @dev sets the max capital amount for the calling pool
34
- function setMaxCapitalAmount(Amount maxCapitalAmount) external;
35
-
36
- /// @dev set pool sepecific fees
37
- function setFees(
38
- Fee memory poolFee,
39
- Fee memory stakingFee,
40
- Fee memory performanceFee
41
- ) external;
42
-
38
+ /// @dev sets the max balance amount for the calling pool
39
+ function setMaxBalanceAmount(Amount maxBalanceAmount) external;
43
40
 
44
41
  /// @dev locks required collateral to cover the specified application (and turn it into a policy)
45
42
  /// - retention level == 1: the full collateral amount will be locked by the specified bundle
@@ -85,7 +82,8 @@ interface IPoolService is IService {
85
82
 
86
83
  /// @dev create a new bundle for the provided parameters
87
84
  /// staking fees will be deducted by the pool service from the staking amount
88
- /// may only be called by registered and unlocked pool components
85
+ /// may only be called by registered and unlocked pool components.
86
+ /// The pool balance is equal to the pool fees plus the capital of all bundles.
89
87
  function createBundle(
90
88
  address owner, // initial bundle owner
91
89
  Fee memory fee, // fees deducted from premium that go to bundle owner
@@ -94,7 +92,19 @@ interface IPoolService is IService {
94
92
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
95
93
  )
96
94
  external
97
- returns(NftId bundleNftId); // the nft id of the newly created bundle
95
+ returns(NftId bundleNftId, Amount netStakedAmount); // the nft id of the newly created bundle
96
+
97
+
98
+ /// @dev increase stakes for bundle
99
+ /// staking fees will be deducted by the pool service from the staking amount
100
+ /// may only be called by registered and unlocked pool components
101
+ function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
102
+
103
+
104
+ /// @dev decrease stakes for bundle
105
+ /// performance fees will be deducted by the pool service from the staking amount
106
+ /// may only be called by registered and unlocked pool components
107
+ function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
98
108
 
99
109
 
100
110
  /// @dev closes the specified bundle
@@ -105,19 +115,22 @@ interface IPoolService is IService {
105
115
  function closeBundle(NftId bundleNftId) external;
106
116
 
107
117
 
108
- /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
109
- function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
118
+ /// @dev Fund the specified pool wallet with the provided amount.
119
+ /// This function will collect the amount from the sender address and transfers it to the pool wallet.
120
+ /// The function will not update balance amounts managed by the framework.
121
+ /// Only available for externally managed pools.
122
+ function fundPoolWallet(NftId poolNftId, Amount amount) external;
110
123
 
111
- /// @dev increase stakes for bundle
112
- /// staking fees will be deducted by the pool service from the staking amount
113
- /// may only be called by registered and unlocked pool components
114
- // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
115
124
 
125
+ /// @dev Defund the specified pool wallet with the provided amount.
126
+ /// This function will transfer the amount from the pool wallet to the sender address.
127
+ /// The function will not update balance amounts managed by the framework.
128
+ /// Only available for externally managed pools.
129
+ function defundPoolWallet(NftId poolNftId, Amount amount) external;
116
130
 
117
- /// @dev decrease stakes for bundle
118
- /// performance fees will be deducted by the pool service from the staking amount
119
- /// may only be called by registered and unlocked pool components
120
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
131
+
132
+ /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
133
+ function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
121
134
 
122
135
 
123
136
  /// @dev calulate required collateral for the provided parameters
@@ -14,6 +14,7 @@ import {Fee, FeeLib} from "../type/Fee.sol";
14
14
  import {NftId, NftIdLib} from "../type/NftId.sol";
15
15
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
16
16
  import {Seconds} from "../type/Seconds.sol";
17
+ import {Timestamp} from "../type/Timestamp.sol";
17
18
  import {TokenHandler} from "../shared/TokenHandler.sol";
18
19
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
20
 
@@ -91,6 +92,18 @@ abstract contract Pool is
91
92
  onlyOwner()
92
93
  {
93
94
  _getPoolStorage()._componentService.registerPool();
95
+ _approveTokenHandler(type(uint256).max);
96
+ }
97
+
98
+ /// @inheritdoc IPoolComponent
99
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
100
+ external
101
+ virtual
102
+ restricted()
103
+ onlyBundleOwner(bundleNftId)
104
+ returns (Amount withdrawnAmount)
105
+ {
106
+ return _withdrawBundleFees(bundleNftId, amount);
94
107
  }
95
108
 
96
109
 
@@ -101,17 +114,13 @@ abstract contract Pool is
101
114
  returns (IComponents.PoolInfo memory poolInfo)
102
115
  {
103
116
  return IComponents.PoolInfo(
104
- NftIdLib.zero(), // will be set when GIF registers the related product
105
117
  PUBLIC_ROLE(), // bundleOwnerRole
106
118
  AmountLib.max(), // maxCapitalAmount,
107
119
  isNftInterceptor(), // isInterceptingBundleTransfers
108
120
  false, // isExternallyManaged,
109
121
  false, // isVerifyingApplications,
110
122
  UFixedLib.toUFixed(1), // collateralizationLevel,
111
- UFixedLib.toUFixed(1), // retentionLevel,
112
- FeeLib.zero(), // initialPoolFee,
113
- FeeLib.zero(), // initialStakingFee,
114
- FeeLib.zero() // initialPerformanceFee,
123
+ UFixedLib.toUFixed(1) // retentionLevel,
115
124
  );
116
125
  }
117
126
 
@@ -160,8 +169,9 @@ abstract contract Pool is
160
169
  )
161
170
  internal
162
171
  virtual
172
+ returns(Amount netAmount)
163
173
  {
164
- // TODO add implementation
174
+ _getPoolStorage()._poolService.stake(bundleNftId, amount);
165
175
  }
166
176
 
167
177
 
@@ -173,8 +183,9 @@ abstract contract Pool is
173
183
  )
174
184
  internal
175
185
  virtual
186
+ returns(Amount netAmount)
176
187
  {
177
- // TODO add implementation
188
+ return _getPoolStorage()._poolService.unstake(bundleNftId, amount);
178
189
  }
179
190
 
180
191
 
@@ -186,8 +197,9 @@ abstract contract Pool is
186
197
  )
187
198
  internal
188
199
  virtual
200
+ returns (Timestamp extendedExpiredAt)
189
201
  {
190
- // TODO add implementation
202
+ return _getPoolStorage()._bundleService.extend(bundleNftId, lifetimeExtension);
191
203
  }
192
204
 
193
205
 
@@ -217,7 +229,7 @@ abstract contract Pool is
217
229
  /// To close a bundle all all linked policies MUST be in closed state as well.
218
230
  /// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
219
231
  /// Once a bundle is closed this action cannot be reversed.
220
- function _close(NftId bundleNftId)
232
+ function _closeBundle(NftId bundleNftId)
221
233
  internal
222
234
  virtual
223
235
  {
@@ -239,13 +251,13 @@ abstract contract Pool is
239
251
  }
240
252
 
241
253
 
242
- /// @dev Sets the maximum overall capital amound held by this pool.
254
+ /// @dev Sets the maximum balance amound held by this pool.
243
255
  /// Function may only be called by pool owner.
244
- function _setMaxCapitalAmount(Amount maxCapitalAmount)
256
+ function _setMaxBalanceAmount(Amount maxBalanceAmount)
245
257
  internal
246
258
  virtual
247
259
  {
248
- _getPoolStorage()._poolService.setMaxCapitalAmount(maxCapitalAmount);
260
+ _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
249
261
  }
250
262
 
251
263
  /// @dev Sets the required role to create/own bundles.
@@ -284,9 +296,9 @@ abstract contract Pool is
284
296
  bytes memory filter
285
297
  )
286
298
  internal
287
- returns(NftId bundleNftId)
299
+ returns(NftId bundleNftId, Amount netStakedAmount)
288
300
  {
289
- bundleNftId = _getPoolStorage()._poolService.createBundle(
301
+ (bundleNftId, netStakedAmount) = _getPoolStorage()._poolService.createBundle(
290
302
  bundleOwner,
291
303
  fee,
292
304
  amount,
@@ -296,12 +308,17 @@ abstract contract Pool is
296
308
  // TODO add logging
297
309
  }
298
310
 
299
-
300
311
  // TODO remove function once this is no longer used to produce contract locations on the fly ...
301
312
  function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
302
313
  return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
303
314
  }
304
315
 
316
+ function _withdrawBundleFees(NftId bundleNftId, Amount amount)
317
+ internal
318
+ returns (Amount withdrawnAmount)
319
+ {
320
+ return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
321
+ }
305
322
 
306
323
  function _getPoolStorage() private pure returns (PoolStorage storage $) {
307
324
  assembly {