@etherisc/gif-next 0.0.2-a6ce659-551 → 0.0.2-a6ea1b1-244

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