@etherisc/gif-next 0.0.2-98bc1be-984 → 0.0.2-998ff1b-277

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 (494) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1234 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +94 -270
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -450
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +260 -233
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -160
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +152 -47
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +28 -178
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1186 -271
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +290 -141
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +57 -224
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -105
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +227 -238
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  69. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  71. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  73. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  79. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  80. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  82. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -37
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -315
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +407 -174
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -290
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -576
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +269 -248
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +66 -82
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -119
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -79
  138. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  139. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -318
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +97 -101
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  149. package/artifacts/contracts/product/Product.sol/Product.json +35 -378
  150. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  151. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  152. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +246 -42
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  161. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  162. package/artifacts/contracts/registry/Registry.sol/Registry.json +464 -99
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +337 -380
  165. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
  167. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  177. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  178. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  179. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -185
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -107
  183. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  185. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  186. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -37
  193. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -275
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  226. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  233. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  234. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +58 -22
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  285. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  287. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  295. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  300. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  302. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  304. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  306. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  307. package/contracts/{shared → authorization}/AccessAdmin.sol +158 -325
  308. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  309. package/contracts/authorization/Authorization.sol +217 -0
  310. package/contracts/authorization/IAccess.sol +48 -0
  311. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -55
  312. package/contracts/authorization/IAuthorization.sol +54 -0
  313. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  314. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  315. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  316. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  317. package/contracts/distribution/BasicDistribution.sol +138 -0
  318. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  319. package/contracts/distribution/Distribution.sol +145 -111
  320. package/contracts/distribution/DistributionService.sol +85 -46
  321. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  322. package/contracts/distribution/IDistributionComponent.sol +25 -39
  323. package/contracts/distribution/IDistributionService.sol +23 -3
  324. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  325. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  326. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  327. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  328. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  329. package/contracts/instance/IInstance.sol +14 -38
  330. package/contracts/instance/IInstanceService.sol +13 -18
  331. package/contracts/instance/Instance.sol +68 -102
  332. package/contracts/instance/InstanceAdmin.sol +221 -267
  333. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  334. package/contracts/instance/InstanceReader.sol +54 -16
  335. package/contracts/instance/InstanceService.sol +114 -87
  336. package/contracts/instance/InstanceServiceManager.sol +8 -13
  337. package/contracts/instance/InstanceStore.sol +23 -5
  338. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  339. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  340. package/contracts/instance/module/IBundle.sol +1 -1
  341. package/contracts/instance/module/IComponents.sol +1 -7
  342. package/contracts/instance/module/IDistribution.sol +0 -1
  343. package/contracts/instance/module/IPolicy.sol +22 -22
  344. package/contracts/mock/Dip.sol +1 -1
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +16 -0
  348. package/contracts/oracle/IOracleComponent.sol +2 -1
  349. package/contracts/oracle/Oracle.sol +73 -51
  350. package/contracts/oracle/OracleService.sol +9 -6
  351. package/contracts/oracle/OracleServiceManager.sol +8 -11
  352. package/contracts/pool/BasicPool.sol +166 -0
  353. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  354. package/contracts/pool/BundleService.sol +197 -55
  355. package/contracts/pool/BundleServiceManager.sol +8 -11
  356. package/contracts/pool/IBundleService.sol +33 -5
  357. package/contracts/pool/IPoolComponent.sol +6 -60
  358. package/contracts/pool/IPoolService.sol +36 -26
  359. package/contracts/pool/Pool.sol +165 -138
  360. package/contracts/pool/PoolService.sol +167 -111
  361. package/contracts/pool/PoolServiceManager.sol +6 -9
  362. package/contracts/product/ApplicationService.sol +55 -62
  363. package/contracts/product/ApplicationServiceManager.sol +6 -6
  364. package/contracts/product/BasicProduct.sol +53 -0
  365. package/contracts/product/BasicProductAuthorization.sol +43 -0
  366. package/contracts/product/ClaimService.sol +212 -108
  367. package/contracts/product/ClaimServiceManager.sol +6 -6
  368. package/contracts/product/IApplicationService.sol +1 -0
  369. package/contracts/product/IClaimService.sol +28 -5
  370. package/contracts/product/IPolicyService.sol +31 -32
  371. package/contracts/product/IPricingService.sol +7 -7
  372. package/contracts/product/IProductComponent.sol +7 -10
  373. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  374. package/contracts/product/PolicyService.sol +361 -190
  375. package/contracts/product/PolicyServiceManager.sol +6 -9
  376. package/contracts/product/PricingService.sol +46 -46
  377. package/contracts/product/PricingServiceManager.sol +5 -8
  378. package/contracts/product/Product.sol +162 -114
  379. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  380. package/contracts/product/RiskServiceManager.sol +39 -0
  381. package/contracts/registry/ChainNft.sol +65 -32
  382. package/contracts/registry/IRegistry.sol +63 -19
  383. package/contracts/registry/IRegistryService.sol +6 -6
  384. package/contracts/registry/Registry.sol +333 -213
  385. package/contracts/registry/RegistryAdmin.sol +260 -129
  386. package/contracts/registry/RegistryService.sol +6 -20
  387. package/contracts/registry/RegistryServiceManager.sol +4 -4
  388. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  389. package/contracts/registry/ReleaseRegistry.sol +491 -0
  390. package/contracts/registry/ServiceAuthorizationV3.sol +16 -17
  391. package/contracts/registry/TokenRegistry.sol +2 -2
  392. package/contracts/shared/Component.sol +30 -43
  393. package/contracts/shared/ComponentService.sol +103 -79
  394. package/contracts/shared/ComponentServiceManager.sol +10 -7
  395. package/contracts/shared/ComponentVerifyingService.sol +2 -2
  396. package/contracts/shared/ContractLib.sol +38 -0
  397. package/contracts/shared/IComponent.sol +4 -4
  398. package/contracts/shared/IComponentService.sol +15 -9
  399. package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
  400. package/contracts/shared/IKeyValueStore.sol +1 -0
  401. package/contracts/shared/ILifecycle.sol +1 -2
  402. package/contracts/shared/IPolicyHolder.sol +12 -22
  403. package/contracts/shared/IService.sol +1 -1
  404. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  405. package/contracts/shared/InstanceLinkedComponent.sol +51 -23
  406. package/contracts/shared/KeyValueStore.sol +6 -2
  407. package/contracts/shared/Lifecycle.sol +16 -69
  408. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  409. package/contracts/shared/NftOwnable.sol +7 -7
  410. package/contracts/shared/PolicyHolder.sol +14 -58
  411. package/contracts/shared/Registerable.sol +4 -4
  412. package/contracts/shared/RegistryLinked.sol +3 -2
  413. package/contracts/shared/Service.sol +19 -15
  414. package/contracts/shared/TokenHandler.sol +100 -19
  415. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  416. package/contracts/staking/IStaking.sol +3 -3
  417. package/contracts/staking/IStakingService.sol +12 -5
  418. package/contracts/staking/StakeManagerLib.sol +18 -25
  419. package/contracts/staking/Staking.sol +27 -42
  420. package/contracts/staking/StakingLifecycle.sol +23 -0
  421. package/contracts/staking/StakingManager.sol +10 -12
  422. package/contracts/staking/StakingReader.sol +12 -16
  423. package/contracts/staking/StakingService.sol +10 -14
  424. package/contracts/staking/StakingServiceManager.sol +4 -4
  425. package/contracts/staking/StakingStore.sol +15 -23
  426. package/contracts/staking/TargetManagerLib.sol +7 -3
  427. package/contracts/type/Amount.sol +12 -5
  428. package/contracts/type/Blocknumber.sol +7 -1
  429. package/contracts/type/ObjectType.sol +52 -18
  430. package/contracts/type/Referral.sol +1 -0
  431. package/contracts/type/RoleId.sol +55 -82
  432. package/contracts/type/Seconds.sol +21 -1
  433. package/contracts/type/StateId.sol +1 -0
  434. package/contracts/type/Timestamp.sol +11 -1
  435. package/contracts/type/UFixed.sol +34 -9
  436. package/contracts/type/Version.sol +3 -1
  437. package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
  438. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  439. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  440. package/package.json +6 -3
  441. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  442. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  443. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  444. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  445. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  446. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  447. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  448. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  449. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  450. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  451. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  452. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  453. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  454. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  455. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  456. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  457. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  458. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  459. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  460. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  461. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  462. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  463. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  464. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  465. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  466. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  467. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  468. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  469. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  470. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  471. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  472. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  473. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  474. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  475. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  476. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  477. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  478. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  479. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  480. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  481. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  482. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  483. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  484. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  485. package/contracts/product/ProductServiceManager.sol +0 -42
  486. package/contracts/registry/ReleaseManager.sol +0 -527
  487. package/contracts/shared/AccessManagerCustom.sol +0 -741
  488. package/contracts/shared/AccessManagerExtended.sol +0 -481
  489. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  490. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  491. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  492. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  493. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  494. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,58 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Authorization} from "../authorization/Authorization.sol";
5
+ import {BasicPool} from "./BasicPool.sol";
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
+ import {IPoolComponent} from "./IPoolComponent.sol";
9
+ import {POOL} from "../type/ObjectType.sol";
10
+ import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
11
+ import {RoleId} from "../type/RoleId.sol";
12
+
13
+
14
+ contract BasicPoolAuthorization
15
+ is Authorization
16
+ {
17
+
18
+ constructor(string memory poolName)
19
+ Authorization(poolName)
20
+ {}
21
+
22
+ function _setupTargets()
23
+ internal
24
+ virtual override
25
+ {
26
+ _addComponentTargetWithRole(POOL()); // basic pool target
27
+ }
28
+
29
+
30
+ function _setupTargetAuthorizations()
31
+ internal
32
+ virtual override
33
+ {
34
+ IAccess.FunctionInfo[] storage functions;
35
+
36
+ // authorize public role (open access to any account, only allows to lock target)
37
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
38
+ _authorize(functions, BasicPool.stake.selector, "stake");
39
+ _authorize(functions, BasicPool.unstake.selector, "unstake");
40
+ _authorize(functions, BasicPool.extend.selector, "extend");
41
+ _authorize(functions, BasicPool.lockBundle.selector, "lockBundle");
42
+ _authorize(functions, BasicPool.unlockBundle.selector, "unlockBundle");
43
+ _authorize(functions, BasicPool.closeBundle.selector, "closeBundle");
44
+ _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
45
+
46
+ _authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
47
+ _authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
48
+ _authorize(functions, BasicPool.setFees.selector, "setFees");
49
+ _authorize(functions, BasicPool.stake.selector, "stake");
50
+ _authorize(functions, BasicPool.unstake.selector, "unstake");
51
+ _authorize(functions, BasicPool.extend.selector, "extend");
52
+
53
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
54
+
55
+ _authorize(functions, IPoolComponent.withdrawBundleFees.selector, "withdrawBundleFees");
56
+ }
57
+ }
58
+
@@ -2,36 +2,25 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
5
6
  import {IComponents} from "../instance/module/IComponents.sol";
6
7
  import {IComponentService} from "../shared/IComponentService.sol";
7
8
  import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
8
10
  import {IInstance} from "../instance/IInstance.sol";
9
11
  import {InstanceStore} from "../instance/InstanceStore.sol";
10
12
  import {IPolicy} from "../instance/module/IPolicy.sol";
11
13
 
12
- import {IVersionable} from "../shared/IVersionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.sol";
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {BundleSet} from "../instance/BundleSet.sol";
16
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
17
+ import {Fee} from "../type/Fee.sol";
18
+ import {InstanceReader} from "../instance/InstanceReader.sol";
14
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
15
20
  import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
16
- import {POOL_OWNER_ROLE, RoleId} from "../type/RoleId.sol";
17
- import {Pool} from "./Pool.sol";
18
-
19
- import {Amount, AmountLib} from "../type/Amount.sol";
20
- import {Fee, FeeLib} from "../type/Fee.sol";
21
21
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
22
  import {Seconds} from "../type/Seconds.sol";
23
- import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
24
- import {Version, VersionLib} from "../type/Version.sol";
25
- import {Versionable} from "../shared/Versionable.sol";
26
-
27
- import {IService} from "../shared/IService.sol";
28
- import {Service} from "../shared/Service.sol";
29
- import {BundleManager} from "../instance/BundleManager.sol";
30
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
31
- import {IBundleService} from "./IBundleService.sol";
32
- import {IRegistryService} from "../registry/IRegistryService.sol";
33
- import {InstanceService} from "../instance/InstanceService.sol";
34
- import {InstanceReader} from "../instance/InstanceReader.sol";
23
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
35
24
 
36
25
  string constant BUNDLE_SERVICE_NAME = "BundleService";
37
26
 
@@ -39,8 +28,7 @@ contract BundleService is
39
28
  ComponentVerifyingService,
40
29
  IBundleService
41
30
  {
42
- using NftIdLib for NftId;
43
-
31
+
44
32
  string public constant NAME = "BundleService";
45
33
 
46
34
  address private _registryAddress;
@@ -52,20 +40,20 @@ contract BundleService is
52
40
  bytes memory data
53
41
  )
54
42
  internal
55
- initializer
56
43
  virtual override
44
+ initializer()
57
45
  {
58
- address registryAddress;
59
- address initialOwner;
60
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
61
- // TODO while PoolService is not deployed in PoolServiceManager constructor
62
- // owner is PoolServiceManager deployer
63
- initializeService(registryAddress, address(0), owner);
46
+ (
47
+ address registryAddress,
48
+ address authority
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ _initializeService(registryAddress, authority, owner);
64
52
 
65
53
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
66
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
67
55
 
68
- registerInterface(type(IBundleService).interfaceId);
56
+ _registerInterface(type(IBundleService).interfaceId);
69
57
  }
70
58
 
71
59
 
@@ -123,25 +111,28 @@ contract BundleService is
123
111
  InstanceStore instanceStore = instance.getInstanceStore();
124
112
  instanceStore.createBundle(
125
113
  bundleNftId,
126
- IBundle.BundleInfo(
127
- poolNftId,
128
- bundleFee,
129
- filter,
130
- lifetime,
131
- TimestampLib.blockTimestamp().addSeconds(lifetime),
132
- zeroTimestamp()));
114
+ IBundle.BundleInfo({
115
+ poolNftId: poolNftId,
116
+ fee: bundleFee,
117
+ filter: filter,
118
+ activatedAt: TimestampLib.blockTimestamp(),
119
+ expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
120
+ closedAt: zeroTimestamp()
121
+ })
122
+ );
133
123
 
134
- // bundle book keeping
135
- _componentService.increaseBundleBalance(
136
- instanceStore,
137
- bundleNftId,
138
- stakingAmount,
139
- AmountLib.zero()); // fee amount
124
+ if (stakingAmount.gtz()) {
125
+ // bundle book keeping
126
+ _componentService.increaseBundleBalance(
127
+ instanceStore,
128
+ bundleNftId,
129
+ stakingAmount,
130
+ AmountLib.zero()); // fee amount
131
+ }
140
132
 
141
133
  // put bundle under bundle managemet
142
- BundleManager bundleManager = instance.getBundleManager();
134
+ BundleSet bundleManager = instance.getBundleSet();
143
135
  bundleManager.add(bundleNftId);
144
-
145
136
  // TODO add logging
146
137
  }
147
138
 
@@ -158,7 +149,7 @@ contract BundleService is
158
149
  restricted()
159
150
  {
160
151
  InstanceReader instanceReader = instance.getInstanceReader();
161
- StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
152
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
162
153
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
163
154
 
164
155
  // ensure bundle is active and not yet expired
@@ -197,7 +188,7 @@ contract BundleService is
197
188
  instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
198
189
 
199
190
  // update set of active bundles
200
- BundleManager bundleManager = instance.getBundleManager();
191
+ BundleSet bundleManager = instance.getBundleSet();
201
192
  bundleManager.lock(bundleNftId);
202
193
 
203
194
  emit LogBundleServiceBundleLocked(bundleNftId);
@@ -214,7 +205,7 @@ contract BundleService is
214
205
  instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
215
206
 
216
207
  // update set of active bundles
217
- BundleManager bundleManager = instance.getBundleManager();
208
+ BundleSet bundleManager = instance.getBundleSet();
218
209
  bundleManager.unlock(bundleNftId);
219
210
 
220
211
  emit LogBundleServiceBundleActivated(bundleNftId);
@@ -228,19 +219,128 @@ contract BundleService is
228
219
  external
229
220
  virtual
230
221
  restricted
222
+ returns (Amount unstakedAmount, Amount feeAmount)
231
223
  {
232
- // udpate bundle state
233
- instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
224
+ InstanceReader instanceReader = instance.getInstanceReader();
234
225
 
235
226
  // ensure no open policies attached to bundle
236
- BundleManager bundleManager = instance.getBundleManager();
227
+ BundleSet bundleManager = instance.getBundleSet();
237
228
  uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
238
229
  if(openPolicies > 0) {
239
230
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
240
231
  }
241
232
 
242
- // update set of active bundles
243
- bundleManager.lock(bundleNftId);
233
+ {
234
+ // update bundle state
235
+ InstanceStore instanceStore = instance.getInstanceStore();
236
+ instanceStore.updateBundleState(bundleNftId, CLOSED());
237
+ bundleManager.lock(bundleNftId);
238
+
239
+ // decrease bundle counters
240
+ Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
241
+ feeAmount = instanceReader.getFeeAmount(bundleNftId);
242
+ unstakedAmount = balanceAmountWithFees - feeAmount;
243
+ _componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
244
+ }
245
+ }
246
+
247
+ /// @inheritdoc IBundleService
248
+ function stake(
249
+ IInstance instance,
250
+ NftId bundleNftId,
251
+ Amount amount
252
+ )
253
+ external
254
+ virtual
255
+ // TODO: restricted() (once #462 is done)
256
+ {
257
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
258
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
259
+
260
+ if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
261
+ || bundleInfo.expiredAt < TimestampLib.blockTimestamp()
262
+ || bundleInfo.closedAt.gtz()) {
263
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
264
+ }
265
+
266
+ _componentService.increaseBundleBalance(
267
+ instance.getInstanceStore(),
268
+ bundleNftId,
269
+ amount,
270
+ AmountLib.zero());
271
+ }
272
+
273
+ /// @inheritdoc IBundleService
274
+ function unstake(
275
+ IInstance instance,
276
+ NftId bundleNftId,
277
+ Amount amount
278
+ )
279
+ external
280
+ virtual
281
+ // TODO: restricted() (once #462 is done)
282
+ returns (Amount unstakedAmount)
283
+ {
284
+ InstanceStore instanceStore = instance.getInstanceStore();
285
+ (
286
+ Amount balanceAmount,
287
+ Amount lockedAmount,
288
+ Amount feeAmount
289
+ ) = instanceStore.getAmounts(bundleNftId);
290
+
291
+ Amount unstakedAmount = amount;
292
+ Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
293
+
294
+ // if amount is max, then unstake all available
295
+ if (amount.gte(AmountLib.max())) {
296
+ unstakedAmount = availableAmount;
297
+ }
298
+
299
+ // ensure unstaked amount does not exceed available amount
300
+ if (unstakedAmount > availableAmount) {
301
+ revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
302
+ }
303
+
304
+ _componentService.decreaseBundleBalance(
305
+ instanceStore,
306
+ bundleNftId,
307
+ unstakedAmount,
308
+ AmountLib.zero());
309
+
310
+ return unstakedAmount;
311
+ }
312
+
313
+ /// @inheritdoc IBundleService
314
+ function extend(NftId bundleNftId, Seconds lifetimeExtension)
315
+ external
316
+ virtual
317
+ // TODO: restricted() (once #462 is done)
318
+ returns (Timestamp extendedExpiredAt)
319
+ {
320
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
321
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
322
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
323
+
324
+ // ensure bundle belongs to the pool
325
+ if (bundleInfo.poolNftId != poolNftId) {
326
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
327
+ }
328
+
329
+ // ensure bundle is active and not yet expired
330
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
331
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
332
+ }
333
+
334
+ if (lifetimeExtension.eqz()) {
335
+ revert ErrorBundleServiceExtensionLifetimeIsZero();
336
+ }
337
+
338
+ bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
339
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
340
+
341
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
342
+
343
+ return bundleInfo.expiredAt;
244
344
  }
245
345
 
246
346
 
@@ -271,7 +371,49 @@ contract BundleService is
271
371
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
272
372
  }
273
373
 
274
- instance.getBundleManager().unlinkPolicy(policyNftId);
374
+ instance.getBundleSet().unlinkPolicy(policyNftId);
375
+ }
376
+
377
+ /// @inheritdoc IBundleService
378
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
379
+ public
380
+ virtual
381
+ // TODO: restricted() (once #462 is done)
382
+ returns (Amount withdrawnAmount)
383
+ {
384
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
385
+ InstanceReader reader = instance.getInstanceReader();
386
+
387
+ IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
388
+ address poolWallet = poolInfo.wallet;
389
+
390
+ IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
391
+
392
+ // determine withdrawn amount
393
+ withdrawnAmount = amount;
394
+ if (withdrawnAmount.gte(AmountLib.max())) {
395
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
396
+ } else {
397
+ if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
398
+ revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
399
+ }
400
+ }
401
+
402
+ // decrease fee counters by withdrawnAmount
403
+ {
404
+ InstanceStore store = instance.getInstanceStore();
405
+ // decrease fee amount of the bundle
406
+ _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
407
+ // decrease pool balance
408
+ _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
409
+ }
410
+
411
+ // transfer amount to bundle owner
412
+ {
413
+ address owner = getRegistry().ownerOf(bundleNftId);
414
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
415
+ poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
416
+ }
275
417
  }
276
418
 
277
419
  /// @dev links policy to bundle
@@ -283,10 +425,10 @@ contract BundleService is
283
425
 
284
426
  // ensure policy has not yet been activated in a previous tx already
285
427
  if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
286
- revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
428
+ revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
287
429
  }
288
430
 
289
- BundleManager bundleManager = instance.getBundleManager();
431
+ BundleSet bundleManager = instance.getBundleSet();
290
432
  bundleManager.linkPolicy(policyNftId);
291
433
  }
292
434
 
@@ -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 {BundleService} from "./BundleService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {ObjectType, REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract BundleServiceManager is ProxyManager {
12
9
 
@@ -15,15 +12,15 @@ contract BundleServiceManager 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
- BundleService bundleSrv = new BundleService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
26
- address(bundleSrv),
19
+ BundleService svc = new BundleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
27
24
  data,
28
25
  salt);
29
26
 
@@ -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
  }
@@ -16,70 +16,10 @@ interface IPoolComponent is IInstanceLinkedComponent {
16
16
 
17
17
  error ErrorPoolNotBundleOwner(NftId bundleNftId, address caller);
18
18
  error ErrorPoolNotPoolService(address caller);
19
-
20
19
  error ErrorPoolApplicationBundleMismatch(NftId applicationNftId);
21
20
 
22
21
  event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
23
22
 
24
- /// @dev increases the staked tokens by the specified amount
25
- /// only the bundle owner may stake tokens
26
- /// bundle MUST be in active or locked state
27
- function stake(NftId bundleNftId, Amount amount) external;
28
-
29
- /// @dev decreases the staked tokens by the specified amount
30
- /// only the bundle owner may unstake tokens from the bundle
31
- /// bundle MUST be in active, locked or closed state
32
- function unstake(NftId bundleNftId, Amount amount) external;
33
-
34
- /// @dev extends the bundle lifetime of the bundle by the specified time
35
- /// only the bundle owner may extend the bundle's lifetime
36
- /// bundle MUST be in active or locked state
37
- function extend(NftId bundleNftId, Seconds lifetimeExtension) external;
38
-
39
- /// @dev locks the specified bundle
40
- /// a bundle to be locked MUST be in active state
41
- /// locked bundles may not be used to collateralize any new policy
42
- function lockBundle(NftId bundleNftId) external;
43
-
44
- /// @dev unlocks the specified bundle
45
- /// a bundle to be unlocked MUST be in locked state
46
- function unlockBundle(NftId bundleNftId) external;
47
-
48
- /// @dev close the specified bundle
49
- /// a bundle to be closed MUST be in active or locked state
50
- /// to close a bundle all all linked policies MUST be in closed state as well
51
- /// closing a bundle finalizes the bundle bookkeeping including overall profit calculation
52
- /// once a bundle is closed this action cannot be reversed
53
- function close(NftId bundleNftId) external;
54
-
55
- /// @dev sets the fee for the specified bundle
56
- /// the fee is added on top of the poolFee and deducted from the premium amounts
57
- /// via these fees individual bundler owner may earn income per policy in the context of peer to peer pools
58
- function setBundleFee(
59
- NftId bundleNftId,
60
- Fee memory fee
61
- ) external;
62
-
63
- /// @dev sets the maximum overall capital amound held by this pool
64
- /// function may only be called by pool owner
65
- function setMaxCapitalAmount(Amount maxCapitalAmount) external;
66
-
67
- /// @dev sets the required role to create/own bundles
68
- /// may only be called once after setting up a pool
69
- /// may only be called by pool owner
70
- function setBundleOwnerRole(RoleId bundleOwnerRole) external;
71
-
72
- /// @dev update pool fees to the specified values
73
- /// pool fees: are deducted from the premium amount and goes to the pool owner
74
- /// staking fees: are deducted from the staked tokens by a bundle owner and goes to the pool owner
75
- /// performance fees: when a bundle is closed a bundle specific profit is calculated
76
- /// the performance fee is deducted from this profit and goes to the pool owner
77
- function setFees(
78
- Fee memory poolFee,
79
- Fee memory stakingFee,
80
- Fee memory performanceFee
81
- ) external;
82
-
83
23
  /// @dev this is a callback function that is called by the product service when underwriting a policy.
84
24
  /// the pool has the option to check the details and object to underwriting by reverting.
85
25
  /// the function is only called for "active" pools that ask to be involved/notified
@@ -106,6 +46,12 @@ interface IPoolComponent is IInstanceLinkedComponent {
106
46
  view
107
47
  returns (bool isMatching);
108
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
+
109
55
  /// @dev returns initial pool specific infos for this pool
110
56
  function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
111
57