@etherisc/gif-next 0.0.2-c0457ac-280 → 0.0.2-c0ca5fe-234

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 (438) hide show
  1. package/README.md +30 -2
  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/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  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 +1548 -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 -228
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +134 -16
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +112 -83
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +88 -105
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -0
  81. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +43 -96
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1520 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +404 -55
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +108 -40
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +213 -0
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -195
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +189 -0
  102. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -296
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +289 -36
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +68 -36
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  114. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  116. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  118. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  120. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  125. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
  126. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  127. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
  129. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  131. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  133. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  135. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  136. package/artifacts/contracts/product/Product.sol/Product.json +32 -153
  137. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  138. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  139. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  141. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  142. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  143. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  144. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  145. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  146. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  147. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  148. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  149. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  150. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  151. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
  152. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  154. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  156. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  157. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  158. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  159. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  160. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  162. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  164. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -86
  167. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
  169. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
  175. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  177. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  179. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  185. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  186. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
  189. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  190. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  191. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  192. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  193. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  194. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  195. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  197. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  203. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  205. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  206. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  207. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  209. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
  210. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  211. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  212. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  214. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  215. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  216. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  218. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  219. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  220. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  222. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  224. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  225. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  226. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  227. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  228. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  229. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  230. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  232. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  234. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  236. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  238. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  240. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  241. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  242. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  243. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  244. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  246. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  248. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  250. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  252. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  254. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  256. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  258. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  260. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  262. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  264. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  266. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  268. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  270. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  272. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  276. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  277. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  278. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  279. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  280. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  281. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  282. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  283. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  284. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  285. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  286. package/contracts/authorization/Authorization.sol +218 -0
  287. package/contracts/authorization/IAccess.sol +48 -0
  288. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  289. package/contracts/authorization/IAuthorization.sol +54 -0
  290. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  291. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  292. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  293. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  294. package/contracts/distribution/BasicDistribution.sol +138 -0
  295. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  296. package/contracts/distribution/Distribution.sol +144 -110
  297. package/contracts/distribution/DistributionService.sol +71 -31
  298. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  299. package/contracts/distribution/IDistributionComponent.sol +25 -39
  300. package/contracts/distribution/IDistributionService.sol +17 -1
  301. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  302. package/contracts/instance/IInstance.sol +8 -9
  303. package/contracts/instance/IInstanceService.sol +13 -18
  304. package/contracts/instance/Instance.sol +61 -70
  305. package/contracts/instance/InstanceAdmin.sol +202 -267
  306. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  307. package/contracts/instance/InstanceReader.sol +22 -9
  308. package/contracts/instance/InstanceService.sol +74 -70
  309. package/contracts/instance/InstanceServiceManager.sol +2 -6
  310. package/contracts/instance/InstanceStore.sol +13 -5
  311. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  312. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  313. package/contracts/instance/module/IBundle.sol +1 -1
  314. package/contracts/instance/module/IComponents.sol +1 -1
  315. package/contracts/instance/module/IDistribution.sol +0 -1
  316. package/contracts/oracle/BasicOracle.sol +48 -0
  317. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  318. package/contracts/oracle/IOracle.sol +16 -0
  319. package/contracts/oracle/IOracleComponent.sol +2 -1
  320. package/contracts/oracle/Oracle.sol +72 -51
  321. package/contracts/oracle/OracleServiceManager.sol +2 -5
  322. package/contracts/pool/BasicPool.sol +164 -0
  323. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  324. package/contracts/pool/BundleService.sol +157 -29
  325. package/contracts/pool/BundleServiceManager.sol +2 -5
  326. package/contracts/pool/IBundleService.sol +25 -3
  327. package/contracts/pool/IPoolComponent.sol +6 -60
  328. package/contracts/pool/IPoolService.sol +12 -4
  329. package/contracts/pool/Pool.sol +167 -134
  330. package/contracts/pool/PoolService.sol +136 -32
  331. package/contracts/pool/PoolServiceManager.sol +2 -5
  332. package/contracts/product/ApplicationService.sol +12 -36
  333. package/contracts/product/ApplicationServiceManager.sol +2 -2
  334. package/contracts/product/BasicProduct.sol +82 -0
  335. package/contracts/product/BasicProductAuthorization.sol +43 -0
  336. package/contracts/product/ClaimService.sol +7 -32
  337. package/contracts/product/ClaimServiceManager.sol +2 -2
  338. package/contracts/product/IProductComponent.sol +7 -9
  339. package/contracts/product/PolicyService.sol +1 -0
  340. package/contracts/product/PolicyServiceManager.sol +2 -5
  341. package/contracts/product/PricingServiceManager.sol +2 -5
  342. package/contracts/product/Product.sol +103 -88
  343. package/contracts/product/ProductService.sol +7 -32
  344. package/contracts/product/ProductServiceManager.sol +2 -5
  345. package/contracts/registry/IRegistry.sol +26 -16
  346. package/contracts/registry/IRegistryService.sol +6 -6
  347. package/contracts/registry/Registry.sol +81 -87
  348. package/contracts/registry/RegistryAdmin.sol +118 -86
  349. package/contracts/registry/RegistryService.sol +4 -18
  350. package/contracts/registry/RegistryServiceManager.sol +2 -2
  351. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  352. package/contracts/registry/ReleaseRegistry.sol +485 -0
  353. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  354. package/contracts/registry/TokenRegistry.sol +2 -2
  355. package/contracts/shared/Component.sol +13 -14
  356. package/contracts/shared/ComponentService.sol +102 -68
  357. package/contracts/shared/ComponentServiceManager.sol +2 -2
  358. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  359. package/contracts/shared/IComponentService.sol +15 -9
  360. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  361. package/contracts/shared/IKeyValueStore.sol +1 -0
  362. package/contracts/shared/ILifecycle.sol +1 -2
  363. package/contracts/shared/IService.sol +1 -1
  364. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  365. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  366. package/contracts/shared/KeyValueStore.sol +6 -2
  367. package/contracts/shared/Lifecycle.sol +16 -69
  368. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  369. package/contracts/shared/NftOwnable.sol +2 -2
  370. package/contracts/shared/PolicyHolder.sol +2 -5
  371. package/contracts/shared/Service.sol +3 -4
  372. package/contracts/staking/IStaking.sol +1 -2
  373. package/contracts/staking/IStakingService.sol +12 -5
  374. package/contracts/staking/Staking.sol +20 -17
  375. package/contracts/staking/StakingLifecycle.sol +23 -0
  376. package/contracts/staking/StakingManager.sol +2 -6
  377. package/contracts/staking/StakingReader.sol +12 -16
  378. package/contracts/staking/StakingServiceManager.sol +2 -2
  379. package/contracts/staking/StakingStore.sol +15 -23
  380. package/contracts/type/Amount.sol +12 -5
  381. package/contracts/type/ObjectType.sol +37 -7
  382. package/contracts/type/Referral.sol +1 -0
  383. package/contracts/type/RoleId.sol +55 -82
  384. package/contracts/type/Seconds.sol +13 -1
  385. package/contracts/type/UFixed.sol +34 -9
  386. package/contracts/type/Version.sol +3 -1
  387. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  388. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  389. package/package.json +6 -3
  390. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  391. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  392. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  393. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  394. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  395. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  396. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  397. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  398. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  399. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  400. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  401. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  402. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  403. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  404. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  405. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  406. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  407. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  408. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  409. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  410. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  411. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  412. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  413. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  414. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  415. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  416. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  417. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  418. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  419. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  420. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  421. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  422. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  423. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  424. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  425. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  426. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  427. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  428. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  429. package/contracts/registry/ReleaseManager.sol +0 -527
  430. package/contracts/shared/AccessManagerCustom.sol +0 -741
  431. package/contracts/shared/AccessManagerExtended.sol +0 -481
  432. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  433. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  434. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  435. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  436. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  437. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  438. /package/contracts/{shared → upgradeability}/Versionable.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.close.selector, "close");
44
+ _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
45
+
46
+ _authorize(functions, BasicPool.setMaxCapitalAmount.selector, "setMaxCapitalAmount");
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
+
@@ -1,37 +1,28 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {IBundle} from "../instance/module/IBundle.sol";
7
+ import {IBundleService} from "./IBundleService.sol";
5
8
  import {IComponents} from "../instance/module/IComponents.sol";
6
9
  import {IComponentService} from "../shared/IComponentService.sol";
7
10
  import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
8
12
  import {IInstance} from "../instance/IInstance.sol";
9
13
  import {InstanceStore} from "../instance/InstanceStore.sol";
10
14
  import {IPolicy} from "../instance/module/IPolicy.sol";
11
15
 
12
- import {IVersionable} from "../shared/IVersionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.sol";
14
- import {NftId, NftIdLib} from "../type/NftId.sol";
15
- 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
16
  import {Amount, AmountLib} from "../type/Amount.sol";
17
+ import {BundleSet} from "../instance/BundleSet.sol";
18
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
20
19
  import {Fee, FeeLib} from "../type/Fee.sol";
20
+ import {InstanceReader} from "../instance/InstanceReader.sol";
21
+ import {NftId, NftIdLib} from "../type/NftId.sol";
22
+ import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
21
23
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
24
  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";
25
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
35
26
 
36
27
  string constant BUNDLE_SERVICE_NAME = "BundleService";
37
28
 
@@ -39,8 +30,7 @@ contract BundleService is
39
30
  ComponentVerifyingService,
40
31
  IBundleService
41
32
  {
42
- using NftIdLib for NftId;
43
-
33
+
44
34
  string public constant NAME = "BundleService";
45
35
 
46
36
  address private _registryAddress;
@@ -127,7 +117,7 @@ contract BundleService is
127
117
  poolNftId,
128
118
  bundleFee,
129
119
  filter,
130
- lifetime,
120
+ TimestampLib.blockTimestamp(),
131
121
  TimestampLib.blockTimestamp().addSeconds(lifetime),
132
122
  zeroTimestamp()));
133
123
 
@@ -139,7 +129,7 @@ contract BundleService is
139
129
  AmountLib.zero()); // fee amount
140
130
 
141
131
  // put bundle under bundle managemet
142
- BundleManager bundleManager = instance.getBundleManager();
132
+ BundleSet bundleManager = instance.getBundleSet();
143
133
  bundleManager.add(bundleNftId);
144
134
 
145
135
  // TODO add logging
@@ -197,7 +187,7 @@ contract BundleService is
197
187
  instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
198
188
 
199
189
  // update set of active bundles
200
- BundleManager bundleManager = instance.getBundleManager();
190
+ BundleSet bundleManager = instance.getBundleSet();
201
191
  bundleManager.lock(bundleNftId);
202
192
 
203
193
  emit LogBundleServiceBundleLocked(bundleNftId);
@@ -214,7 +204,7 @@ contract BundleService is
214
204
  instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
215
205
 
216
206
  // update set of active bundles
217
- BundleManager bundleManager = instance.getBundleManager();
207
+ BundleSet bundleManager = instance.getBundleSet();
218
208
  bundleManager.unlock(bundleNftId);
219
209
 
220
210
  emit LogBundleServiceBundleActivated(bundleNftId);
@@ -233,7 +223,7 @@ contract BundleService is
233
223
  instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
234
224
 
235
225
  // ensure no open policies attached to bundle
236
- BundleManager bundleManager = instance.getBundleManager();
226
+ BundleSet bundleManager = instance.getBundleSet();
237
227
  uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
238
228
  if(openPolicies > 0) {
239
229
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
@@ -243,6 +233,89 @@ contract BundleService is
243
233
  bundleManager.lock(bundleNftId);
244
234
  }
245
235
 
236
+ /// @inheritdoc IBundleService
237
+ function stake(
238
+ IInstance instance,
239
+ NftId bundleNftId,
240
+ Amount amount
241
+ )
242
+ external
243
+ virtual
244
+ // TODO: restricted() (once #462 is done)
245
+ {
246
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
247
+ StateId bundleState = instance.getInstanceReader().getMetadata(bundleNftId.toKey32(BUNDLE())).state;
248
+
249
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp() || bundleInfo.closedAt.gtz()) {
250
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
251
+ }
252
+
253
+ _componentService.increaseBundleBalance(
254
+ instance.getInstanceStore(),
255
+ bundleNftId,
256
+ amount,
257
+ AmountLib.zero());
258
+ }
259
+
260
+ /// @inheritdoc IBundleService
261
+ function unstake(
262
+ IInstance instance,
263
+ NftId bundleNftId,
264
+ Amount amount
265
+ )
266
+ external
267
+ virtual
268
+ // TODO: restricted() (once #462 is done)
269
+ {
270
+ InstanceStore instanceStore = instance.getInstanceStore();
271
+ (
272
+ Amount balanceAmount,
273
+ Amount lockedAmount,
274
+ Amount feeAmount
275
+ ) = instanceStore.getAmounts(bundleNftId);
276
+
277
+ Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
278
+
279
+ if (availableAmount < amount) {
280
+ revert ErrorBundleServiceStakeAmountExceedsLimit(amount, availableAmount);
281
+ }
282
+
283
+ _componentService.decreaseBundleBalance(
284
+ instanceStore,
285
+ bundleNftId,
286
+ amount,
287
+ AmountLib.zero());
288
+ }
289
+
290
+ /// @inheritdoc IBundleService
291
+ function extend(NftId bundleNftId, Seconds lifetimeExtension)
292
+ external
293
+ virtual
294
+ // TODO: restricted() (once #462 is done)
295
+ returns (Timestamp extendedExpiredAt)
296
+ {
297
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
298
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
299
+ StateId bundleState = instance.getInstanceReader().getMetadata(bundleNftId.toKey32(BUNDLE())).state;
300
+
301
+ // ensure bundle belongs to the pool
302
+ if (bundleInfo.poolNftId != poolNftId) {
303
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
304
+ }
305
+
306
+ // ensure bundle is active and not yet expired
307
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
308
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
309
+ }
310
+
311
+ bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
312
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
313
+
314
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
315
+
316
+ return bundleInfo.expiredAt;
317
+ }
318
+
246
319
 
247
320
  function releaseCollateral(
248
321
  IInstance instance,
@@ -271,7 +344,62 @@ contract BundleService is
271
344
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
272
345
  }
273
346
 
274
- instance.getBundleManager().unlinkPolicy(policyNftId);
347
+ instance.getBundleSet().unlinkPolicy(policyNftId);
348
+ }
349
+
350
+ /// @inheritdoc IBundleService
351
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
352
+ public
353
+ virtual
354
+ // TODO: restricted() (once #462 is done)
355
+ returns (Amount withdrawnAmount)
356
+ {
357
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
358
+ InstanceReader reader = instance.getInstanceReader();
359
+
360
+ IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
361
+ address poolWallet = poolInfo.wallet;
362
+
363
+ IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
364
+
365
+ // determine withdrawn amount
366
+ withdrawnAmount = amount;
367
+ if (withdrawnAmount.gte(AmountLib.max())) {
368
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
369
+ } else {
370
+ if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
371
+ revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
372
+ }
373
+ }
374
+
375
+ if (withdrawnAmount.eqz()) {
376
+ revert ErrorBundleServiceFeesWithdrawAmountIsZero();
377
+ }
378
+
379
+ // check allowance
380
+ IERC20Metadata token = IERC20Metadata(poolInfo.token);
381
+ uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
382
+ if (tokenAllowance < withdrawnAmount.toInt()) {
383
+ revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
384
+ }
385
+
386
+ // decrease fee counters by withdrawnAmount
387
+ {
388
+ InstanceStore store = instance.getInstanceStore();
389
+ // decrease fee amount of the bundle
390
+ _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
391
+ // decrease pool balance
392
+ _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
393
+ }
394
+
395
+ // transfer amount to bundle owner
396
+ {
397
+ address owner = getRegistry().ownerOf(bundleNftId);
398
+ // TODO: centralize token handling (issue #471)
399
+ poolInfo.tokenHandler.transfer(poolWallet, owner, withdrawnAmount);
400
+
401
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
402
+ }
275
403
  }
276
404
 
277
405
  /// @dev links policy to bundle
@@ -283,10 +411,10 @@ contract BundleService is
283
411
 
284
412
  // ensure policy has not yet been activated in a previous tx already
285
413
  if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
286
- revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
414
+ revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
287
415
  }
288
416
 
289
- BundleManager bundleManager = instance.getBundleManager();
417
+ BundleSet bundleManager = instance.getBundleSet();
290
418
  bundleManager.linkPolicy(policyNftId);
291
419
  }
292
420
 
@@ -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,16 @@ interface IBundleService is IService {
26
26
 
27
27
  error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
28
 
29
+ // error ErrorBundleServiceBundleNotActive(NftId distributorNftId);
30
+ error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
31
+ error ErrorBundleServiceFeesWithdrawAmountIsZero();
32
+ error ErrorBundleServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
33
+
34
+ error ErrorBundleServiceStakeAmountExceedsLimit(Amount amount, Amount limit);
35
+
36
+ event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
37
+ event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
38
+
29
39
  /// @dev create a new bundle for the specified attributes
30
40
  /// may only be called by pool service
31
41
  function create(
@@ -42,10 +52,15 @@ interface IBundleService is IService {
42
52
 
43
53
 
44
54
  /// @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);
55
+ /// may only be called by the pool service
56
+ function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
47
57
 
48
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
58
+ /// @dev decrease bundle stakes by the specified amount
59
+ /// may only be called by the pool service
60
+ function unstake(IInstance instance, NftId bundleNftId, Amount amount) external;
61
+
62
+ /// @dev extend the lifetime of the bundle by the specified time in seconds
63
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
49
64
 
50
65
  /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
51
66
  /// only active bundles may be locked
@@ -103,4 +118,11 @@ interface IBundleService is IService {
103
118
  IInstance instance,
104
119
  NftId policyNftId
105
120
  ) external;
121
+
122
+ /// @dev Withdraw bundle feeds for the given bundle
123
+ /// @param bundleNftId the bundle Nft Id
124
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
125
+ /// @return withdrawnAmount the effective withdrawn amount
126
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
127
+
106
128
  }
@@ -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
 
@@ -23,8 +23,15 @@ interface IPoolService is IService {
23
23
  event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
24
24
  event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
25
25
 
26
+ event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
27
+ event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
28
+
26
29
  error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
27
30
  error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
31
+ error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
32
+ error ErrorPoolServiceMaxCapitalAmountExceeded(NftId poolNftId, Amount maxCapitalAmount, Amount capitalAmount, Amount amountToBeAdded);
33
+ error ErrorPoolServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
34
+ error ErrorPoolServiceAmountIsZero();
28
35
 
29
36
  /// @dev defines the required role for bundle owners for the calling pool
30
37
  /// default implementation returns PUBLIC ROLE
@@ -85,7 +92,8 @@ interface IPoolService is IService {
85
92
 
86
93
  /// @dev create a new bundle for the provided parameters
87
94
  /// staking fees will be deducted by the pool service from the staking amount
88
- /// may only be called by registered and unlocked pool components
95
+ /// may only be called by registered and unlocked pool components.
96
+ /// The pool balance is equal to the pool fees plus the capital of all bundles.
89
97
  function createBundle(
90
98
  address owner, // initial bundle owner
91
99
  Fee memory fee, // fees deducted from premium that go to bundle owner
@@ -95,6 +103,7 @@ interface IPoolService is IService {
95
103
  )
96
104
  external
97
105
  returns(NftId bundleNftId); // the nft id of the newly created bundle
106
+ // TODO: return netAmount
98
107
 
99
108
 
100
109
  /// @dev closes the specified bundle
@@ -111,13 +120,12 @@ interface IPoolService is IService {
111
120
  /// @dev increase stakes for bundle
112
121
  /// staking fees will be deducted by the pool service from the staking amount
113
122
  /// may only be called by registered and unlocked pool components
114
- // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
115
-
123
+ function stake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
116
124
 
117
125
  /// @dev decrease stakes for bundle
118
126
  /// performance fees will be deducted by the pool service from the staking amount
119
127
  /// may only be called by registered and unlocked pool components
120
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
128
+ function unstake(NftId bundleNftId, Amount amount) external returns(Amount netAmount);
121
129
 
122
130
 
123
131
  /// @dev calulate required collateral for the provided parameters