@etherisc/gif-next 0.0.2-782a7d8-939 → 0.0.2-782e47c-610

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 (497) 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 +1253 -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/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  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/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  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 +286 -235
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +77 -108
  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 +165 -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 +64 -84
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -219
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  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 +189 -194
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -100
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +211 -266
  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/Cloneable.sol/Cloneable.json +0 -53
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  80. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  81. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  82. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  84. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  86. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -37
  90. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
  92. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -315
  94. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +63 -138
  96. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +44 -83
  98. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  100. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  102. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +429 -172
  104. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +119 -94
  106. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +218 -1
  108. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -290
  110. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +233 -100
  112. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -576
  114. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +287 -250
  116. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +46 -89
  118. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +62 -164
  120. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +41 -96
  122. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  124. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  126. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +216 -169
  128. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +68 -103
  130. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -0
  132. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +127 -0
  134. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +197 -119
  136. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +56 -43
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -79
  140. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  141. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +15 -2
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +269 -311
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +64 -103
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.json +130 -253
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +58 -121
  150. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  151. package/artifacts/contracts/product/Product.sol/Product.json +35 -378
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  156. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +246 -42
  160. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -183
  162. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/Registry.sol/Registry.json +460 -100
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1618 -170
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +48 -123
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -76
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  179. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  180. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +262 -184
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +72 -111
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +10 -109
  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 +166 -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 +0 -42
  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/IService.sol/IService.json +13 -0
  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 +32 -275
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  210. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  211. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  214. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  222. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  223. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Service.sol/Service.json +10 -109
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  226. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  228. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +97 -101
  235. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  236. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -302
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +47 -110
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +85 -178
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -98
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +201 -148
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  287. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  289. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  301. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  302. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  308. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  309. package/contracts/authorization/AccessAdmin.sol +589 -0
  310. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  311. package/contracts/authorization/Authorization.sol +217 -0
  312. package/contracts/authorization/IAccess.sol +48 -0
  313. package/contracts/authorization/IAccessAdmin.sol +136 -0
  314. package/contracts/authorization/IAuthorization.sol +54 -0
  315. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  316. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  317. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  318. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  319. package/contracts/distribution/BasicDistribution.sol +138 -0
  320. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  321. package/contracts/distribution/Distribution.sol +145 -111
  322. package/contracts/distribution/DistributionService.sol +83 -45
  323. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  324. package/contracts/distribution/IDistributionComponent.sol +25 -39
  325. package/contracts/distribution/IDistributionService.sol +23 -3
  326. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  327. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  328. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  329. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  330. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  331. package/contracts/instance/IInstance.sol +20 -39
  332. package/contracts/instance/IInstanceService.sol +34 -23
  333. package/contracts/instance/Instance.sol +110 -117
  334. package/contracts/instance/InstanceAdmin.sol +221 -267
  335. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  336. package/contracts/instance/InstanceReader.sol +56 -16
  337. package/contracts/instance/InstanceService.sol +192 -87
  338. package/contracts/instance/InstanceServiceManager.sol +2 -6
  339. package/contracts/instance/InstanceStore.sol +26 -20
  340. package/contracts/instance/base/BalanceStore.sol +11 -6
  341. package/contracts/instance/base/Cloneable.sol +2 -25
  342. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  343. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  344. package/contracts/instance/module/IBundle.sol +1 -1
  345. package/contracts/instance/module/IComponents.sol +1 -7
  346. package/contracts/instance/module/IDistribution.sol +0 -1
  347. package/contracts/instance/module/IPolicy.sol +22 -22
  348. package/contracts/mock/Dip.sol +1 -1
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +16 -0
  352. package/contracts/oracle/IOracleComponent.sol +2 -1
  353. package/contracts/oracle/Oracle.sol +73 -51
  354. package/contracts/oracle/OracleService.sol +9 -7
  355. package/contracts/oracle/OracleServiceManager.sol +2 -5
  356. package/contracts/pool/BasicPool.sol +166 -0
  357. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  358. package/contracts/pool/BundleService.sol +210 -68
  359. package/contracts/pool/BundleServiceManager.sol +2 -5
  360. package/contracts/pool/IBundleService.sol +33 -5
  361. package/contracts/pool/IPoolComponent.sol +6 -60
  362. package/contracts/pool/IPoolService.sol +36 -26
  363. package/contracts/pool/Pool.sol +165 -138
  364. package/contracts/pool/PoolService.sol +171 -115
  365. package/contracts/pool/PoolServiceManager.sol +2 -5
  366. package/contracts/product/ApplicationService.sol +58 -64
  367. package/contracts/product/ApplicationServiceManager.sol +2 -2
  368. package/contracts/product/BasicProduct.sol +53 -0
  369. package/contracts/product/BasicProductAuthorization.sol +43 -0
  370. package/contracts/product/ClaimService.sol +125 -80
  371. package/contracts/product/ClaimServiceManager.sol +2 -2
  372. package/contracts/product/IApplicationService.sol +1 -0
  373. package/contracts/product/IClaimService.sol +28 -5
  374. package/contracts/product/IPolicyService.sol +27 -32
  375. package/contracts/product/IPricingService.sol +7 -7
  376. package/contracts/product/IProductComponent.sol +7 -10
  377. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  378. package/contracts/product/PolicyService.sol +285 -187
  379. package/contracts/product/PolicyServiceManager.sol +2 -5
  380. package/contracts/product/PricingService.sol +48 -48
  381. package/contracts/product/PricingServiceManager.sol +2 -5
  382. package/contracts/product/Product.sol +162 -114
  383. package/contracts/product/{ProductService.sol → RiskService.sol} +16 -43
  384. package/contracts/product/RiskServiceManager.sol +39 -0
  385. package/contracts/registry/ChainNft.sol +65 -32
  386. package/contracts/registry/IRegistry.sol +63 -19
  387. package/contracts/registry/IRegistryService.sol +6 -6
  388. package/contracts/registry/Registry.sol +333 -207
  389. package/contracts/registry/RegistryAdmin.sol +376 -149
  390. package/contracts/registry/RegistryService.sol +11 -25
  391. package/contracts/registry/RegistryServiceManager.sol +2 -7
  392. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  393. package/contracts/registry/ReleaseRegistry.sol +491 -0
  394. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  395. package/contracts/registry/TokenRegistry.sol +2 -2
  396. package/contracts/shared/Component.sol +30 -43
  397. package/contracts/shared/ComponentService.sol +103 -80
  398. package/contracts/shared/ComponentServiceManager.sol +2 -2
  399. package/contracts/shared/ComponentVerifyingService.sol +2 -2
  400. package/contracts/shared/IComponent.sol +4 -4
  401. package/contracts/shared/IComponentService.sol +15 -9
  402. package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
  403. package/contracts/shared/IKeyValueStore.sol +1 -0
  404. package/contracts/shared/ILifecycle.sol +1 -2
  405. package/contracts/shared/IPolicyHolder.sol +0 -9
  406. package/contracts/shared/IService.sol +8 -1
  407. package/contracts/shared/InitializableCustom.sol +2 -2
  408. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  409. package/contracts/shared/InstanceLinkedComponent.sol +51 -23
  410. package/contracts/shared/KeyValueStore.sol +6 -2
  411. package/contracts/shared/Lifecycle.sol +16 -69
  412. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  413. package/contracts/shared/NftOwnable.sol +7 -7
  414. package/contracts/shared/PolicyHolder.sol +7 -53
  415. package/contracts/shared/Registerable.sol +4 -4
  416. package/contracts/shared/RegistryLinked.sol +3 -2
  417. package/contracts/shared/Service.sol +32 -27
  418. package/contracts/shared/TokenHandler.sol +100 -19
  419. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  420. package/contracts/staking/IStaking.sol +3 -3
  421. package/contracts/staking/IStakingService.sol +22 -11
  422. package/contracts/staking/StakeManagerLib.sol +70 -25
  423. package/contracts/staking/Staking.sol +84 -137
  424. package/contracts/staking/StakingLifecycle.sol +23 -0
  425. package/contracts/staking/StakingManager.sol +2 -6
  426. package/contracts/staking/StakingReader.sol +13 -17
  427. package/contracts/staking/StakingService.sol +68 -67
  428. package/contracts/staking/StakingServiceManager.sol +2 -3
  429. package/contracts/staking/StakingStore.sol +93 -60
  430. package/contracts/staking/TargetManagerLib.sol +7 -3
  431. package/contracts/type/Amount.sol +12 -5
  432. package/contracts/type/Blocknumber.sol +7 -1
  433. package/contracts/type/ObjectType.sol +171 -64
  434. package/contracts/type/Referral.sol +1 -0
  435. package/contracts/type/RoleId.sol +103 -75
  436. package/contracts/type/Seconds.sol +21 -1
  437. package/contracts/type/Selector.sol +102 -0
  438. package/contracts/type/StateId.sol +1 -0
  439. package/contracts/type/String.sol +53 -0
  440. package/contracts/type/Timestamp.sol +11 -1
  441. package/contracts/type/UFixed.sol +34 -9
  442. package/contracts/type/Version.sol +3 -1
  443. package/contracts/{shared → upgradeability}/ProxyManager.sol +4 -5
  444. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  445. package/package.json +6 -4
  446. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  447. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  448. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  449. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  450. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  451. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  452. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  453. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  454. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
  455. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  456. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
  457. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  458. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  459. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  460. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  461. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  462. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  463. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  464. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  465. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  466. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  467. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  468. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  469. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  470. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  471. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  472. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  473. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  474. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  475. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  476. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  477. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  478. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  479. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  480. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  481. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  482. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  483. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  484. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  485. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  486. package/contracts/product/ProductServiceManager.sol +0 -42
  487. package/contracts/registry/ReleaseManager.sol +0 -600
  488. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  489. package/contracts/shared/AccessManagerCustom.sol +0 -736
  490. package/contracts/shared/AccessManagerExtended.sol +0 -470
  491. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  492. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  493. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  494. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  495. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  496. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  497. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -0,0 +1,166 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../type/Amount.sol";
5
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
6
+ import {Fee, FeeLib} from "../type/Fee.sol";
7
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
+ import {IBundleService} from "./IBundleService.sol";
9
+ import {IPoolComponent} from "./IPoolComponent.sol";
10
+ import {IPoolService} from "./IPoolService.sol";
11
+ import {IComponents} from "../instance/module/IComponents.sol";
12
+ import {IComponentService} from "../shared/IComponentService.sol";
13
+ import {NftId, NftIdLib} from "../type/NftId.sol";
14
+ import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
15
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
16
+ import {Seconds} from "../type/Seconds.sol";
17
+ import {Timestamp} from "../type/Timestamp.sol";
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
+
21
+ import {Pool} from "./Pool.sol";
22
+
23
+ abstract contract BasicPool is
24
+ Pool
25
+ {
26
+
27
+ function _initializeBasicPool(
28
+ address registry,
29
+ NftId instanceNftId,
30
+ IAuthorization authorization,
31
+ address token,
32
+ string memory name,
33
+ address initialOwner
34
+ )
35
+ internal
36
+ virtual
37
+ onlyInitializing()
38
+ {
39
+ _initializePool(
40
+ registry,
41
+ instanceNftId,
42
+ name,
43
+ token,
44
+ authorization,
45
+ false, // isInterceptingNftTransfers,
46
+ initialOwner,
47
+ "", // registryData
48
+ ""); // componentData
49
+ }
50
+
51
+ function stake(
52
+ NftId bundleNftId,
53
+ Amount amount
54
+ )
55
+ public
56
+ virtual
57
+ restricted()
58
+ onlyBundleOwner(bundleNftId)
59
+ {
60
+ _stake(bundleNftId, amount);
61
+ }
62
+
63
+
64
+ function unstake(
65
+ NftId bundleNftId,
66
+ Amount amount
67
+ )
68
+ public
69
+ virtual
70
+ restricted()
71
+ onlyBundleOwner(bundleNftId)
72
+ {
73
+ _unstake(bundleNftId, amount);
74
+ }
75
+
76
+
77
+ function extend(
78
+ NftId bundleNftId,
79
+ Seconds lifetimeExtension
80
+ )
81
+ public
82
+ virtual
83
+ restricted()
84
+ onlyBundleOwner(bundleNftId)
85
+ returns(Timestamp newExpiredAt)
86
+ {
87
+ return _extend(bundleNftId, lifetimeExtension);
88
+ }
89
+
90
+
91
+ function lockBundle(NftId bundleNftId)
92
+ public
93
+ virtual
94
+ restricted()
95
+ onlyBundleOwner(bundleNftId)
96
+ {
97
+ _lockBundle(bundleNftId);
98
+ }
99
+
100
+
101
+ function unlockBundle(NftId bundleNftId)
102
+ public
103
+ virtual
104
+ restricted()
105
+ onlyBundleOwner(bundleNftId)
106
+ {
107
+ _unlockBundle(bundleNftId);
108
+ }
109
+
110
+
111
+ function closeBundle(NftId bundleNftId)
112
+ public
113
+ virtual
114
+ restricted()
115
+ onlyBundleOwner(bundleNftId)
116
+ {
117
+ _closeBundle(bundleNftId);
118
+ }
119
+
120
+
121
+ function setBundleFee(
122
+ NftId bundleNftId,
123
+ Fee memory fee
124
+ )
125
+ public
126
+ virtual
127
+ restricted()
128
+ onlyBundleOwner(bundleNftId)
129
+ {
130
+ _setBundleFee(bundleNftId, fee);
131
+ }
132
+
133
+
134
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
135
+ public
136
+ virtual
137
+ restricted()
138
+ onlyOwner()
139
+ {
140
+ _setMaxBalanceAmount(maxBalanceAmount);
141
+ }
142
+
143
+
144
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
145
+ public
146
+ virtual
147
+ restricted()
148
+ onlyOwner()
149
+ {
150
+ _setBundleOwnerRole(bundleOwnerRole);
151
+ }
152
+
153
+
154
+ function setFees(
155
+ Fee memory poolFee,
156
+ Fee memory stakingFee,
157
+ Fee memory performanceFee
158
+ )
159
+ public
160
+ virtual
161
+ restricted()
162
+ onlyOwner()
163
+ {
164
+ _setPoolFees(poolFee, stakingFee, performanceFee);
165
+ }
166
+ }
@@ -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,24 +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
46
  address registryAddress;
59
47
  address initialOwner;
60
48
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
61
49
  // TODO while PoolService is not deployed in PoolServiceManager constructor
62
50
  // owner is PoolServiceManager deployer
63
- initializeService(registryAddress, address(0), owner);
51
+ _initializeService(registryAddress, address(0), owner);
64
52
 
65
53
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
66
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
67
55
 
68
- registerInterface(type(IBundleService).interfaceId);
69
- }
70
-
71
- function getDomain() public pure override returns(ObjectType) {
72
- return BUNDLE();
56
+ _registerInterface(type(IBundleService).interfaceId);
73
57
  }
74
58
 
75
59
 
@@ -127,25 +111,28 @@ contract BundleService is
127
111
  InstanceStore instanceStore = instance.getInstanceStore();
128
112
  instanceStore.createBundle(
129
113
  bundleNftId,
130
- IBundle.BundleInfo(
131
- poolNftId,
132
- bundleFee,
133
- filter,
134
- lifetime,
135
- TimestampLib.blockTimestamp().addSeconds(lifetime),
136
- 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
+ );
137
123
 
138
- // bundle book keeping
139
- _componentService.increaseBundleBalance(
140
- instanceStore,
141
- bundleNftId,
142
- stakingAmount,
143
- 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
+ }
144
132
 
145
133
  // put bundle under bundle managemet
146
- BundleManager bundleManager = instance.getBundleManager();
134
+ BundleSet bundleManager = instance.getBundleSet();
147
135
  bundleManager.add(bundleNftId);
148
-
149
136
  // TODO add logging
150
137
  }
151
138
 
@@ -162,7 +149,7 @@ contract BundleService is
162
149
  restricted()
163
150
  {
164
151
  InstanceReader instanceReader = instance.getInstanceReader();
165
- StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
152
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
166
153
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
167
154
 
168
155
  // ensure bundle is active and not yet expired
@@ -201,7 +188,7 @@ contract BundleService is
201
188
  instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
202
189
 
203
190
  // update set of active bundles
204
- BundleManager bundleManager = instance.getBundleManager();
191
+ BundleSet bundleManager = instance.getBundleSet();
205
192
  bundleManager.lock(bundleNftId);
206
193
 
207
194
  emit LogBundleServiceBundleLocked(bundleNftId);
@@ -218,7 +205,7 @@ contract BundleService is
218
205
  instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
219
206
 
220
207
  // update set of active bundles
221
- BundleManager bundleManager = instance.getBundleManager();
208
+ BundleSet bundleManager = instance.getBundleSet();
222
209
  bundleManager.unlock(bundleNftId);
223
210
 
224
211
  emit LogBundleServiceBundleActivated(bundleNftId);
@@ -232,19 +219,128 @@ contract BundleService is
232
219
  external
233
220
  virtual
234
221
  restricted
222
+ returns (Amount unstakedAmount, Amount feeAmount)
235
223
  {
236
- // udpate bundle state
237
- instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
224
+ InstanceReader instanceReader = instance.getInstanceReader();
238
225
 
239
226
  // ensure no open policies attached to bundle
240
- BundleManager bundleManager = instance.getBundleManager();
227
+ BundleSet bundleManager = instance.getBundleSet();
241
228
  uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
242
229
  if(openPolicies > 0) {
243
230
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
244
231
  }
245
232
 
246
- // update set of active bundles
247
- 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;
248
344
  }
249
345
 
250
346
 
@@ -261,22 +357,6 @@ contract BundleService is
261
357
  instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
262
358
  }
263
359
 
264
- /// @dev links policy to bundle
265
- function _linkPolicy(IInstance instance, NftId policyNftId)
266
- internal
267
- {
268
- InstanceReader instanceReader = instance.getInstanceReader();
269
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
270
-
271
- // ensure policy has not yet been activated in a previous tx already
272
- if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
273
- revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
274
- }
275
-
276
- BundleManager bundleManager = instance.getBundleManager();
277
- bundleManager.linkPolicy(policyNftId);
278
- }
279
-
280
360
  /// @dev unlinks policy from bundle
281
361
  function unlinkPolicy(
282
362
  IInstance instance,
@@ -291,6 +371,68 @@ contract BundleService is
291
371
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
292
372
  }
293
373
 
294
- 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
+ }
417
+ }
418
+
419
+ /// @dev links policy to bundle
420
+ function _linkPolicy(IInstance instance, NftId policyNftId)
421
+ internal
422
+ {
423
+ InstanceReader instanceReader = instance.getInstanceReader();
424
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
425
+
426
+ // ensure policy has not yet been activated in a previous tx already
427
+ if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
428
+ revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
429
+ }
430
+
431
+ BundleSet bundleManager = instance.getBundleSet();
432
+ bundleManager.linkPolicy(policyNftId);
433
+ }
434
+
435
+ function _getDomain() internal pure override returns(ObjectType) {
436
+ return BUNDLE();
295
437
  }
296
438
  }
@@ -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
 
@@ -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
  }