@etherisc/gif-next 0.0.2-708facd-459 → 0.0.2-70b1050-183

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 (434) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
  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 -248
  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 -222
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
  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 +120 -31
  31. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  33. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  35. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1706 -0
  37. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +410 -0
  39. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  49. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  50. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1 -1
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
  56. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +97 -100
  58. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  60. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +40 -147
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  66. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
  68. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  70. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  73. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  75. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  77. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  83. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  84. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  85. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -235
  87. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  89. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -37
  92. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -219
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  100. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +55 -284
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  102. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +396 -163
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  110. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -95
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  113. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  114. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -280
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +269 -248
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +66 -82
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  120. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  124. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +22 -225
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  128. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  132. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -119
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  140. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -37
  141. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  142. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  144. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -318
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +97 -101
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  151. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  152. package/artifacts/contracts/product/Product.sol/Product.json +22 -225
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  154. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  156. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  160. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +256 -8
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  162. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  163. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  164. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/Registry.sol/Registry.json +474 -65
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  167. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +243 -131
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  169. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  180. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  181. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -161
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  185. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -95
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  188. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  189. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  190. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  192. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  194. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
  196. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  201. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  206. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  208. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -222
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  221. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  225. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  226. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  283. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  286. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  288. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  290. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  292. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  294. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  295. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  296. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  298. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  299. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  300. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  301. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  302. package/contracts/authorization/AccessAdmin.sol +25 -24
  303. package/contracts/authorization/Authorization.sol +0 -1
  304. package/contracts/authorization/IAccessAdmin.sol +0 -1
  305. package/contracts/distribution/BasicDistribution.sol +4 -15
  306. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  307. package/contracts/distribution/Distribution.sol +23 -11
  308. package/contracts/distribution/DistributionService.sol +75 -41
  309. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  310. package/contracts/distribution/IDistributionComponent.sol +8 -4
  311. package/contracts/distribution/IDistributionService.sol +18 -2
  312. package/contracts/examples/fire/FirePool.sol +76 -0
  313. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  314. package/contracts/examples/fire/FireProduct.sol +327 -0
  315. package/contracts/examples/fire/FireProductAuthorization.sol +31 -0
  316. package/contracts/examples/fire/FireUSD.sol +26 -0
  317. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  318. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  319. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  320. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  321. package/contracts/instance/IInstance.sol +7 -30
  322. package/contracts/instance/IInstanceService.sol +1 -1
  323. package/contracts/instance/Instance.sol +10 -35
  324. package/contracts/instance/InstanceAdmin.sol +23 -4
  325. package/contracts/instance/InstanceAuthorizationV3.sol +5 -3
  326. package/contracts/instance/InstanceReader.sol +32 -7
  327. package/contracts/instance/InstanceService.sol +63 -40
  328. package/contracts/instance/InstanceServiceManager.sol +8 -13
  329. package/contracts/instance/InstanceStore.sol +12 -1
  330. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  331. package/contracts/instance/module/IBundle.sol +1 -1
  332. package/contracts/instance/module/IComponents.sol +1 -7
  333. package/contracts/instance/module/IDistribution.sol +0 -1
  334. package/contracts/instance/module/IPolicy.sol +22 -22
  335. package/contracts/mock/Dip.sol +1 -1
  336. package/contracts/oracle/IOracleComponent.sol +2 -1
  337. package/contracts/oracle/Oracle.sol +17 -7
  338. package/contracts/oracle/OracleService.sol +9 -6
  339. package/contracts/oracle/OracleServiceManager.sol +8 -11
  340. package/contracts/pool/BasicPool.sol +7 -5
  341. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  342. package/contracts/pool/BundleService.sol +190 -48
  343. package/contracts/pool/BundleServiceManager.sol +8 -11
  344. package/contracts/pool/IBundleService.sol +33 -5
  345. package/contracts/pool/IPoolComponent.sol +6 -0
  346. package/contracts/pool/IPoolService.sol +36 -26
  347. package/contracts/pool/Pool.sol +40 -25
  348. package/contracts/pool/PoolService.sol +166 -109
  349. package/contracts/pool/PoolServiceManager.sol +6 -9
  350. package/contracts/product/ApplicationService.sol +55 -62
  351. package/contracts/product/ApplicationServiceManager.sol +6 -6
  352. package/contracts/product/BasicProduct.sol +3 -32
  353. package/contracts/product/BasicProductAuthorization.sol +3 -0
  354. package/contracts/product/ClaimService.sol +212 -108
  355. package/contracts/product/ClaimServiceManager.sol +6 -6
  356. package/contracts/product/IApplicationService.sol +1 -0
  357. package/contracts/product/IClaimService.sol +28 -5
  358. package/contracts/product/IPolicyService.sol +31 -32
  359. package/contracts/product/IPricingService.sol +7 -7
  360. package/contracts/product/IProductComponent.sol +1 -1
  361. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  362. package/contracts/product/PolicyService.sol +361 -190
  363. package/contracts/product/PolicyServiceManager.sol +6 -9
  364. package/contracts/product/PricingService.sol +46 -46
  365. package/contracts/product/PricingServiceManager.sol +5 -8
  366. package/contracts/product/Product.sol +68 -35
  367. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  368. package/contracts/product/RiskServiceManager.sol +39 -0
  369. package/contracts/registry/ChainNft.sol +65 -32
  370. package/contracts/registry/IRegistry.sol +62 -15
  371. package/contracts/registry/IRegistryService.sol +6 -6
  372. package/contracts/registry/Registry.sol +324 -200
  373. package/contracts/registry/RegistryAdmin.sol +150 -51
  374. package/contracts/registry/RegistryService.sol +6 -20
  375. package/contracts/registry/RegistryServiceManager.sol +4 -4
  376. package/contracts/registry/ReleaseRegistry.sol +12 -8
  377. package/contracts/registry/ServiceAuthorizationV3.sol +7 -8
  378. package/contracts/shared/Component.sol +30 -43
  379. package/contracts/shared/ComponentService.sol +88 -28
  380. package/contracts/shared/ComponentServiceManager.sol +10 -7
  381. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  382. package/contracts/shared/ContractLib.sol +38 -0
  383. package/contracts/shared/IComponent.sol +4 -4
  384. package/contracts/shared/IComponentService.sol +15 -9
  385. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  386. package/contracts/shared/IPolicyHolder.sol +12 -22
  387. package/contracts/shared/IService.sol +1 -1
  388. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  389. package/contracts/shared/InstanceLinkedComponent.sol +25 -4
  390. package/contracts/shared/NftOwnable.sol +7 -7
  391. package/contracts/shared/PolicyHolder.sol +14 -58
  392. package/contracts/shared/Registerable.sol +4 -4
  393. package/contracts/shared/RegistryLinked.sol +3 -2
  394. package/contracts/shared/Service.sol +19 -15
  395. package/contracts/shared/TokenHandler.sol +100 -19
  396. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  397. package/contracts/staking/IStaking.sol +3 -2
  398. package/contracts/staking/StakeManagerLib.sol +18 -25
  399. package/contracts/staking/Staking.sol +26 -39
  400. package/contracts/staking/StakingManager.sol +10 -11
  401. package/contracts/staking/StakingReader.sol +6 -9
  402. package/contracts/staking/StakingService.sol +10 -14
  403. package/contracts/staking/StakingServiceManager.sol +4 -4
  404. package/contracts/staking/StakingStore.sol +5 -15
  405. package/contracts/staking/TargetManagerLib.sol +7 -3
  406. package/contracts/type/Amount.sol +12 -5
  407. package/contracts/type/Blocknumber.sol +7 -1
  408. package/contracts/type/NftId.sol +1 -0
  409. package/contracts/type/ObjectType.sol +18 -18
  410. package/contracts/type/Referral.sol +1 -0
  411. package/contracts/type/RiskId.sol +15 -1
  412. package/contracts/type/Seconds.sol +21 -1
  413. package/contracts/type/StateId.sol +1 -0
  414. package/contracts/type/Timestamp.sol +11 -1
  415. package/contracts/type/UFixed.sol +29 -10
  416. package/contracts/type/Version.sol +3 -1
  417. package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
  418. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  419. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  420. package/package.json +1 -1
  421. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  422. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  423. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  424. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  425. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  426. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  427. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  428. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  429. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  430. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  431. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  432. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  433. package/contracts/product/ProductServiceManager.sol +0 -42
  434. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -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
 
@@ -100,19 +113,15 @@ abstract contract Pool is
100
113
  view
101
114
  returns (IComponents.PoolInfo memory poolInfo)
102
115
  {
103
- return IComponents.PoolInfo(
104
- NftIdLib.zero(), // will be set when GIF registers the related product
105
- PUBLIC_ROLE(), // bundleOwnerRole
106
- AmountLib.max(), // maxCapitalAmount,
107
- isNftInterceptor(), // isInterceptingBundleTransfers
108
- false, // isExternallyManaged,
109
- false, // isVerifyingApplications,
110
- UFixedLib.toUFixed(1), // collateralizationLevel,
111
- UFixedLib.toUFixed(1), // retentionLevel,
112
- FeeLib.zero(), // initialPoolFee,
113
- FeeLib.zero(), // initialStakingFee,
114
- FeeLib.zero() // initialPerformanceFee,
115
- );
116
+ return IComponents.PoolInfo({
117
+ maxBalanceAmount: AmountLib.max(),
118
+ bundleOwnerRole: PUBLIC_ROLE(),
119
+ isInterceptingBundleTransfers: isNftInterceptor(),
120
+ isExternallyManaged: false,
121
+ isVerifyingApplications: false,
122
+ collateralizationLevel: UFixedLib.toUFixed(1),
123
+ retentionLevel: UFixedLib.toUFixed(1)
124
+ });
116
125
  }
117
126
 
118
127
  // Internals
@@ -149,7 +158,7 @@ abstract contract Pool is
149
158
  $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
150
159
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
151
160
 
152
- registerInterface(type(IPoolComponent).interfaceId);
161
+ _registerInterface(type(IPoolComponent).interfaceId);
153
162
  }
154
163
 
155
164
  /// @dev increases the staked tokens by the specified amount
@@ -160,8 +169,9 @@ abstract contract Pool is
160
169
  )
161
170
  internal
162
171
  virtual
172
+ returns(Amount)
163
173
  {
164
- // TODO add implementation
174
+ return _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.
@@ -275,11 +287,10 @@ abstract contract Pool is
275
287
  _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
276
288
  }
277
289
 
278
- /// @dev Creates a new bundle using the provided parameter values.
290
+ /// @dev Creates a new empty bundle using the provided parameter values.
279
291
  function _createBundle(
280
292
  address bundleOwner,
281
293
  Fee memory fee,
282
- Amount amount,
283
294
  Seconds lifetime,
284
295
  bytes memory filter
285
296
  )
@@ -289,19 +300,23 @@ abstract contract Pool is
289
300
  bundleNftId = _getPoolStorage()._poolService.createBundle(
290
301
  bundleOwner,
291
302
  fee,
292
- amount,
293
303
  lifetime,
294
304
  filter);
295
305
 
296
306
  // TODO add logging
297
307
  }
298
308
 
299
-
300
309
  // TODO remove function once this is no longer used to produce contract locations on the fly ...
301
310
  function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
302
311
  return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
303
312
  }
304
313
 
314
+ function _withdrawBundleFees(NftId bundleNftId, Amount amount)
315
+ internal
316
+ returns (Amount withdrawnAmount)
317
+ {
318
+ return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
319
+ }
305
320
 
306
321
  function _getPoolStorage() private pure returns (PoolStorage storage $) {
307
322
  assembly {
@@ -1,45 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Pool} from "./Pool.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {IInstance} from "../instance/IInstance.sol";
7
4
  import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
8
6
  import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
9
10
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
-
11
- import {IVersionable} from "../shared/IVersionable.sol";
12
- import {Versionable} from "../shared/Versionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.sol";
11
+ import {IPoolService} from "./IPoolService.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+ import {IRegistryService} from "../registry/IRegistryService.sol";
14
+ import {IStaking} from "../staking/IStaking.sol";
14
15
 
15
16
  import {Amount, AmountLib} from "../type/Amount.sol";
16
17
  import {Fee, FeeLib} from "../type/Fee.sol";
17
- import {NftId, NftIdLib} from "../type/NftId.sol";
18
- import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
19
20
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
20
21
  import {Fee, FeeLib} from "../type/Fee.sol";
21
- import {Version, VersionLib} from "../type/Version.sol";
22
- import {KEEP_STATE, StateId} from "../type/StateId.sol";
22
+ import {KEEP_STATE} from "../type/StateId.sol";
23
23
  import {Seconds} from "../type/Seconds.sol";
24
- import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
25
- import {TokenHandler} from "../shared/TokenHandler.sol";
26
24
  import {UFixed} from "../type/UFixed.sol";
27
- import {Version, VersionLib} from "../type/Version.sol";
28
-
29
- import {IService} from "../shared/IService.sol";
30
- import {Service} from "../shared/Service.sol";
31
25
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
32
- import {IBundleService} from "./IBundleService.sol";
33
- import {IComponentService} from "../shared/IComponentService.sol";
34
- import {IInstanceService} from "../instance/IInstanceService.sol";
35
- import {IPoolService} from "./IPoolService.sol";
36
- import {IRegistryService} from "../registry/IRegistryService.sol";
37
- import {IStaking} from "../staking/IStaking.sol";
38
- import {InstanceService} from "../instance/InstanceService.sol";
39
26
  import {InstanceReader} from "../instance/InstanceReader.sol";
40
27
  import {InstanceStore} from "../instance/InstanceStore.sol";
41
- import {IComponent} from "../shared/IComponent.sol";
42
- import {IPoolComponent} from "./IPoolComponent.sol";
43
28
 
44
29
  string constant POOL_SERVICE_NAME = "PoolService";
45
30
 
@@ -47,9 +32,6 @@ contract PoolService is
47
32
  ComponentVerifyingService,
48
33
  IPoolService
49
34
  {
50
- using NftIdLib for NftId;
51
- using AmountLib for Amount;
52
-
53
35
  IBundleService internal _bundleService;
54
36
  IComponentService internal _componentService;
55
37
  IInstanceService private _instanceService;
@@ -62,16 +44,15 @@ contract PoolService is
62
44
  bytes memory data
63
45
  )
64
46
  internal
65
- initializer
66
47
  virtual override
48
+ initializer()
67
49
  {
68
50
  (
69
- address registryAddress,,
70
- //address managerAddress
51
+ address registryAddress,
71
52
  address authority
72
- ) = abi.decode(data, (address, address, address));
53
+ ) = abi.decode(data, (address, address));
73
54
 
74
- initializeService(registryAddress, authority, owner);
55
+ _initializeService(registryAddress, authority, owner);
75
56
 
76
57
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
77
58
  _bundleService = IBundleService(_getServiceAddress(BUNDLE()));
@@ -80,27 +61,23 @@ contract PoolService is
80
61
 
81
62
  _staking = IStaking(getRegistry().getStakingAddress());
82
63
 
83
- registerInterface(type(IPoolService).interfaceId);
64
+ _registerInterface(type(IPoolService).interfaceId);
84
65
  }
85
66
 
86
-
87
- function setMaxCapitalAmount(Amount maxCapitalAmount)
67
+ /// @inheritdoc IPoolService
68
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
88
69
  external
89
70
  virtual
90
71
  {
91
- /*
92
72
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
93
73
  InstanceReader instanceReader = instance.getInstanceReader();
74
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
94
75
 
95
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
96
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
97
- Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
98
-
99
- poolInfo.maxCapitalAmount = maxCapitalAmount;
76
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
77
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
100
78
  instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
101
79
 
102
- emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
103
- */
80
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
104
81
  }
105
82
 
106
83
  function setBundleOwnerRole(RoleId bundleOwnerRole)
@@ -124,31 +101,10 @@ contract PoolService is
124
101
  emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
125
102
  }
126
103
 
127
-
128
- function setFees(
129
- Fee memory poolFee,
130
- Fee memory stakingFee,
131
- Fee memory performanceFee
132
- )
133
- external
134
- virtual
135
- {
136
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
137
-
138
- IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
139
- poolInfo.poolFee = poolFee;
140
- poolInfo.stakingFee = stakingFee;
141
- poolInfo.performanceFee = performanceFee;
142
-
143
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
144
-
145
- // TODO add logging
146
- }
147
-
104
+ /// @inheritdoc IPoolService
148
105
  function createBundle(
149
106
  address bundleOwner, // initial bundle owner
150
107
  Fee memory fee, // fees deducted from premium that go to bundle owner
151
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
152
108
  Seconds lifetime, // initial duration for which new policies are covered
153
109
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
154
110
  )
@@ -157,38 +113,17 @@ contract PoolService is
157
113
  returns(NftId bundleNftId)
158
114
  {
159
115
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
160
- InstanceReader instanceReader = instance.getInstanceReader();
161
-
162
- (
163
- Amount stakingFeeAmount,
164
- Amount stakingNetAmount
165
- ) = FeeLib.calculateFee(
166
- _getStakingFee(instanceReader, poolNftId),
167
- stakingAmount);
168
116
 
117
+ // create the empty bundle
169
118
  bundleNftId = _bundleService.create(
170
119
  instance,
171
120
  poolNftId,
172
121
  bundleOwner,
173
122
  fee,
174
- stakingNetAmount,
123
+ AmountLib.zero(),
175
124
  lifetime,
176
125
  filter);
177
126
 
178
- // pool book keeping
179
- _componentService.increasePoolBalance(
180
- instance.getInstanceStore(),
181
- poolNftId,
182
- stakingAmount,
183
- stakingFeeAmount);
184
-
185
- // pool bookkeeping and collect tokens from bundle owner
186
- _collectStakingAmount(
187
- instanceReader,
188
- poolNftId,
189
- bundleOwner,
190
- stakingAmount);
191
-
192
127
  emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
193
128
  }
194
129
 
@@ -198,8 +133,8 @@ contract PoolService is
198
133
  view
199
134
  returns (Fee memory stakingFee)
200
135
  {
201
- NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
202
- return instanceReader.getPoolInfo(productNftId).stakingFee;
136
+ NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
137
+ return instanceReader.getProductInfo(productNftId).stakingFee;
203
138
  }
204
139
 
205
140
  function closeBundle(NftId bundleNftId)
@@ -208,20 +143,147 @@ contract PoolService is
208
143
  {
209
144
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
210
145
 
211
- // TODO book keeping for pool collateral released outside of retention level
146
+ // TODO get performance fee for pool (#477)
212
147
 
213
148
  // releasing collateral in bundle
214
- _bundleService.close(instance, bundleNftId);
215
-
216
- // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
149
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
217
150
 
151
+ _componentService.decreasePoolBalance(
152
+ instance.getInstanceStore(),
153
+ poolNftId,
154
+ unstakedAmount + feeAmount,
155
+ AmountLib.zero());
156
+
218
157
  emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
158
+
159
+ if ((unstakedAmount + feeAmount).gtz()){
160
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
161
+ poolComponentInfo.tokenHandler.distributeTokens(
162
+ poolComponentInfo.wallet,
163
+ getRegistry().ownerOf(bundleNftId),
164
+ unstakedAmount + feeAmount);
165
+ }
166
+ }
167
+
168
+ /// @inheritdoc IPoolService
169
+ function stake(NftId bundleNftId, Amount amount)
170
+ external
171
+ virtual
172
+ // TODO: restricted() (once #462 is done)
173
+ returns(Amount netAmount)
174
+ {
175
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
176
+ InstanceReader instanceReader = instance.getInstanceReader();
177
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
178
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
179
+
180
+ if (bundleInfo.poolNftId != poolNftId) {
181
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
182
+ }
183
+
184
+ {
185
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
186
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
187
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
188
+ }
189
+ }
190
+
191
+ // calculate fees
192
+ Amount feeAmount;
193
+ (
194
+ feeAmount,
195
+ netAmount
196
+ ) = FeeLib.calculateFee(
197
+ _getStakingFee(instanceReader, poolNftId),
198
+ amount);
199
+
200
+ // do all the bookkeeping
201
+ _componentService.increasePoolBalance(
202
+ instance.getInstanceStore(),
203
+ poolNftId,
204
+ netAmount,
205
+ feeAmount);
206
+
207
+ _bundleService.stake(instance, bundleNftId, netAmount);
208
+
209
+ // collect tokens from bundle owner
210
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
211
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
212
+
213
+ // TODO only collect staking token when pool is not externally managed
214
+ _collectStakingAmount(
215
+ instanceReader,
216
+ poolNftId,
217
+ bundleOwner,
218
+ amount);
219
+ }
220
+
221
+ /// @inheritdoc IPoolService
222
+ function unstake(NftId bundleNftId, Amount amount)
223
+ external
224
+ virtual
225
+ // TODO: restricted() (once #462 is done)
226
+ returns(Amount netAmount)
227
+ {
228
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
229
+ InstanceReader instanceReader = instance.getInstanceReader();
230
+ InstanceStore instanceStore = instance.getInstanceStore();
231
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
232
+
233
+ if (bundleInfo.poolNftId != poolNftId) {
234
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
235
+ }
236
+
237
+ // call bundle service for bookkeeping and additional checks
238
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
239
+
240
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
241
+ // if amount was max, this was set to the available amount
242
+
243
+ // TODO: handle performance fees (issue #477)
244
+
245
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
246
+ _componentService.decreasePoolBalance(
247
+ instanceStore,
248
+ poolNftId,
249
+ unstakedAmount,
250
+ AmountLib.zero());
251
+
252
+ IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
253
+ address poolWallet = poolComponentInfo.wallet;
254
+ // transfer amount to bundle owner
255
+ address owner = getRegistry().ownerOf(bundleNftId);
256
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
257
+ poolComponentInfo.tokenHandler.distributeTokens(
258
+ poolWallet,
259
+ owner,
260
+ unstakedAmount);
261
+ return unstakedAmount;
262
+ }
263
+
264
+
265
+ function fundPoolWallet(NftId poolNftId, Amount amount)
266
+ external
267
+ virtual
268
+ restricted()
269
+ {
270
+ // TODO check that poolNftId is externally managed
271
+ // TODO implement
219
272
  }
220
273
 
221
274
 
275
+ function defundPoolWallet(NftId poolNftId, Amount amount)
276
+ external
277
+ virtual
278
+ restricted()
279
+ {
280
+ // TODO check that poolNftId is externally managed
281
+ // TODO implement
282
+ }
283
+
222
284
  function processSale(
223
285
  NftId bundleNftId,
224
- IPolicy.Premium memory premium
286
+ IPolicy.PremiumInfo memory premium
225
287
  )
226
288
  external
227
289
  virtual
@@ -233,9 +295,9 @@ contract PoolService is
233
295
  IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
234
296
  IInstance instance = IInstance(instanceObjectInfo.objectAddress);
235
297
 
236
- Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
237
- Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
238
- Amount bundleNetAmount = AmountLib.toAmount(premium.netPremiumAmount);
298
+ Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
299
+ Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
300
+ Amount bundleNetAmount = premium.netPremiumAmount;
239
301
 
240
302
  InstanceStore instanceStore = instance.getInstanceStore();
241
303
  _componentService.increasePoolBalance(
@@ -421,7 +483,6 @@ contract PoolService is
421
483
  }
422
484
 
423
485
 
424
- // TODO create (I)TreasuryService that deals with all gif related token transfers
425
486
  /// @dev transfers the specified amount from the bundle owner to the pool's wallet
426
487
  function _collectStakingAmount(
427
488
  InstanceReader instanceReader,
@@ -434,15 +495,11 @@ contract PoolService is
434
495
 
435
496
  // collecting investor token
436
497
  IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
437
- TokenHandler tokenHandler = componentInfo.tokenHandler;
438
498
  address poolWallet = componentInfo.wallet;
439
-
440
- if(amount.gtz()) {
441
- tokenHandler.transfer(
442
- bundleOwner,
443
- poolWallet,
444
- amount);
445
- }
499
+ componentInfo.tokenHandler.collectTokens(
500
+ bundleOwner,
501
+ poolWallet,
502
+ amount);
446
503
  }
447
504
 
448
505
  function _getDomain() internal pure override returns(ObjectType) {
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {PoolService} from "./PoolService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract PoolServiceManager is ProxyManager {
12
9
 
@@ -15,14 +12,14 @@ contract PoolServiceManager is ProxyManager {
15
12
  /// @dev initializes proxy manager with pool service implementation
16
13
  constructor(
17
14
  address authority,
18
- address registryAddress,
15
+ address registry,
19
16
  bytes32 salt
20
17
  )
21
- ProxyManager(registryAddress)
22
18
  {
23
19
  PoolService poolSrv = new PoolService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
26
23
  address(poolSrv),
27
24
  data,
28
25
  salt);