@etherisc/gif-next 0.0.2-e016345-525 → 0.0.2-e04dbfc-031

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 (465) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +137 -58
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +37 -31
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +83 -3
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +449 -248
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  12. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +222 -21
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +348 -184
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +100 -13
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +83 -129
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +207 -33
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -81
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +283 -181
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +74 -60
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +33 -68
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +155 -68
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +92 -42
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +188 -46
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +248 -191
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +207 -33
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +149 -131
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +207 -33
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -45
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +113 -47
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +188 -46
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +305 -150
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +207 -33
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +88 -45
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +139 -28
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +100 -7
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -53
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +672 -320
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +188 -46
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +374 -197
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +113 -83
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -38
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +422 -352
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +96 -53
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +68 -38
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +189 -35
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +38 -8
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +52 -22
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -68
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +42 -36
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -21
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +188 -46
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +118 -201
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +50 -64
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +38 -80
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +38 -8
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +120 -175
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +51 -21
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +472 -0
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +265 -278
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +86 -56
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +139 -50
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +157 -112
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +207 -33
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +260 -187
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +72 -74
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +69 -3
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +105 -68
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +144 -99
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +215 -187
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +727 -0
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +68 -66
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +122 -78
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +48 -42
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +157 -112
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +131 -81
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +46 -28
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +26 -2
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.json +64 -40
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +548 -429
  192. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  193. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +51 -44
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +22 -24
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +324 -54
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  208. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Component.sol/Component.json +51 -21
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +96 -138
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +44 -50
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +113 -4
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -8
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +28 -45
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +38 -8
  228. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  229. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  230. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  234. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  237. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  238. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  239. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +51 -21
  241. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  243. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  245. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  247. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  249. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  251. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  253. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  254. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +63 -162
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  259. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  261. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +112 -17
  263. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -6
  265. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  266. package/artifacts/contracts/staking/Staking.sol/Staking.json +191 -74
  267. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  268. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  269. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  271. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +56 -32
  273. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +30 -57
  275. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +185 -54
  277. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -29
  279. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +143 -129
  281. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  282. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +33 -23
  283. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  284. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  286. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  289. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  291. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  293. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  295. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  296. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  297. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  299. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  300. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  301. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  303. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  305. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  307. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  309. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +30 -6
  311. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  313. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  316. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  318. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  322. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  324. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  326. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  328. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  329. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  330. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +4 -4
  331. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  333. package/contracts/accounting/AccountingService.sol +43 -26
  334. package/contracts/accounting/AccountingServiceManager.sol +1 -1
  335. package/contracts/accounting/IAccountingService.sol +3 -0
  336. package/contracts/authorization/AccessAdmin.sol +293 -205
  337. package/contracts/authorization/AccessAdminLib.sol +183 -0
  338. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  339. package/contracts/authorization/Authorization.sol +307 -231
  340. package/contracts/authorization/IAccessAdmin.sol +69 -36
  341. package/contracts/authorization/IAuthorization.sol +21 -1
  342. package/contracts/distribution/BasicDistribution.sol +12 -8
  343. package/contracts/distribution/BasicDistributionAuthorization.sol +21 -8
  344. package/contracts/distribution/Distribution.sol +14 -55
  345. package/contracts/distribution/DistributionService.sol +62 -30
  346. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  347. package/contracts/distribution/IDistributionComponent.sol +0 -9
  348. package/contracts/distribution/IDistributionService.sol +18 -15
  349. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
  350. package/contracts/examples/fire/FireProduct.sol +4 -3
  351. package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
  352. package/contracts/examples/unpermissioned/SimpleDistribution.sol +28 -0
  353. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
  354. package/contracts/examples/unpermissioned/SimplePool.sol +0 -1
  355. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
  356. package/contracts/examples/unpermissioned/SimpleProduct.sol +29 -4
  357. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
  358. package/contracts/instance/BundleSet.sol +4 -4
  359. package/contracts/instance/IInstance.sol +49 -15
  360. package/contracts/instance/IInstanceService.sol +15 -1
  361. package/contracts/instance/Instance.sol +80 -23
  362. package/contracts/instance/InstanceAdmin.sol +269 -104
  363. package/contracts/instance/InstanceAuthorizationV3.sol +49 -36
  364. package/contracts/instance/InstanceReader.sol +106 -35
  365. package/contracts/instance/InstanceService.sol +144 -73
  366. package/contracts/instance/InstanceServiceManager.sol +1 -1
  367. package/contracts/instance/InstanceStore.sol +13 -2
  368. package/contracts/instance/RiskSet.sol +11 -12
  369. package/contracts/instance/base/ObjectCounter.sol +1 -2
  370. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  371. package/contracts/instance/base/ObjectSet.sol +7 -8
  372. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  373. package/contracts/instance/module/IComponents.sol +3 -2
  374. package/contracts/instance/module/IDistribution.sol +5 -2
  375. package/contracts/instance/module/IRisk.sol +2 -0
  376. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  377. package/contracts/oracle/Oracle.sol +1 -1
  378. package/contracts/oracle/OracleService.sol +20 -19
  379. package/contracts/oracle/OracleServiceManager.sol +1 -1
  380. package/contracts/pool/BasicPoolAuthorization.sol +21 -13
  381. package/contracts/pool/BundleService.sol +28 -58
  382. package/contracts/pool/BundleServiceManager.sol +1 -1
  383. package/contracts/pool/IBundleService.sol +13 -20
  384. package/contracts/pool/IPoolService.sol +50 -38
  385. package/contracts/pool/Pool.sol +9 -9
  386. package/contracts/pool/PoolLib.sol +309 -0
  387. package/contracts/pool/PoolService.sol +334 -190
  388. package/contracts/pool/PoolServiceManager.sol +1 -1
  389. package/contracts/product/ApplicationService.sol +28 -9
  390. package/contracts/product/ApplicationServiceManager.sol +1 -1
  391. package/contracts/product/BasicProduct.sol +2 -0
  392. package/contracts/product/BasicProductAuthorization.sol +23 -8
  393. package/contracts/product/ClaimService.sol +165 -139
  394. package/contracts/product/ClaimServiceManager.sol +1 -1
  395. package/contracts/product/IApplicationService.sol +3 -0
  396. package/contracts/product/IClaimService.sol +14 -2
  397. package/contracts/product/IPolicyService.sol +11 -6
  398. package/contracts/product/IPricingService.sol +1 -0
  399. package/contracts/product/IProductComponent.sol +4 -1
  400. package/contracts/product/IRiskService.sol +7 -7
  401. package/contracts/product/PolicyService.sol +112 -184
  402. package/contracts/product/PolicyServiceLib.sol +119 -0
  403. package/contracts/product/PolicyServiceManager.sol +1 -1
  404. package/contracts/product/PricingService.sol +28 -19
  405. package/contracts/product/PricingServiceManager.sol +3 -3
  406. package/contracts/product/Product.sol +55 -13
  407. package/contracts/product/RiskService.sol +76 -29
  408. package/contracts/product/RiskServiceManager.sol +1 -1
  409. package/contracts/registry/ChainNft.sol +4 -2
  410. package/contracts/registry/IRegistry.sol +8 -15
  411. package/contracts/registry/IRelease.sol +26 -0
  412. package/contracts/registry/Registry.sol +7 -2
  413. package/contracts/registry/RegistryAdmin.sol +143 -342
  414. package/contracts/registry/RegistryAuthorization.sol +267 -0
  415. package/contracts/registry/RegistryService.sol +3 -3
  416. package/contracts/registry/RegistryServiceManager.sol +1 -1
  417. package/contracts/registry/ReleaseAdmin.sol +253 -0
  418. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  419. package/contracts/registry/ReleaseRegistry.sol +149 -117
  420. package/contracts/registry/ServiceAuthorizationV3.sol +159 -2
  421. package/contracts/registry/TokenRegistry.sol +6 -8
  422. package/contracts/shared/Component.sol +27 -19
  423. package/contracts/shared/ComponentService.sol +119 -116
  424. package/contracts/shared/ComponentServiceManager.sol +1 -1
  425. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  426. package/contracts/shared/ContractLib.sol +60 -3
  427. package/contracts/shared/IComponent.sol +3 -4
  428. package/contracts/shared/IComponentService.sol +4 -10
  429. package/contracts/shared/IRegisterable.sol +15 -4
  430. package/contracts/shared/IService.sol +3 -5
  431. package/contracts/shared/InitializableERC165.sol +9 -1
  432. package/contracts/shared/InstanceLinkedComponent.sol +2 -2
  433. package/contracts/shared/NftOwnable.sol +6 -5
  434. package/contracts/shared/PolicyHolder.sol +1 -1
  435. package/contracts/shared/Registerable.sol +42 -19
  436. package/contracts/shared/RegistryLinked.sol +1 -1
  437. package/contracts/shared/Service.sol +8 -27
  438. package/contracts/shared/TokenHandler.sol +45 -92
  439. package/contracts/staking/IStaking.sol +12 -10
  440. package/contracts/staking/IStakingService.sol +19 -1
  441. package/contracts/staking/Staking.sol +57 -26
  442. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  443. package/contracts/staking/StakingReader.sol +6 -16
  444. package/contracts/staking/StakingService.sol +71 -44
  445. package/contracts/staking/StakingServiceManager.sol +5 -4
  446. package/contracts/staking/StakingStore.sol +2 -1
  447. package/contracts/type/ObjectType.sol +47 -39
  448. package/contracts/type/RiskId.sol +9 -3
  449. package/contracts/type/RoleId.sol +24 -4
  450. package/contracts/type/Selector.sol +5 -0
  451. package/contracts/type/Timestamp.sol +0 -5
  452. package/contracts/type/UFixed.sol +9 -119
  453. package/contracts/type/Version.sol +54 -5
  454. package/contracts/upgradeability/ProxyManager.sol +1 -1
  455. package/package.json +2 -2
  456. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  457. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  458. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  459. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  460. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  461. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  462. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  463. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  464. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  465. package/contracts/instance/module/IAccess.sol +0 -46
@@ -26,15 +26,18 @@ interface IStakingService is IService
26
26
  event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
27
27
  event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
28
28
  event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
29
+ event LogStakingServiceStakeRestaked(address stakeOwner, NftId indexed stakeNftId, NftId newStakeNftId, NftId indexed newTargetNftId, Amount indexed newStakeBalance);
29
30
 
30
31
  event LogStakingServiceRewardsUpdated(NftId stakeNftId);
31
32
  event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
32
33
 
33
34
  // modifiers
35
+ error ErrorStakingServiceNotStakingOwner(address account);
34
36
  error ErrorStakingServiceNotStaking(address stakingAddress);
35
37
  error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
36
38
 
37
39
  // create
40
+ error ErrorStakingServiceTargetUnknown(NftId targetNftId);
38
41
  error ErrorStakingServiceZeroTargetNftId();
39
42
  error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
40
43
  error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
@@ -48,6 +51,13 @@ interface IStakingService is IService
48
51
  // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
49
52
  // TODO also make sure that protocol rewards can be refilled and withdrawn
50
53
 
54
+ /// @dev Approves the staking token handler.
55
+ /// Reverts if the staking token handler wallet is not the token handler itself.
56
+ function approveTokenHandler(
57
+ IERC20Metadata token,
58
+ Amount amount
59
+ ) external;
60
+
51
61
  /// @dev creates/registers an on-chain instance staking target.
52
62
  /// function granted to instance service
53
63
  function createInstanceTarget(
@@ -64,6 +74,10 @@ interface IStakingService is IService
64
74
  /// Permissioned: Only owner of the specified target.
65
75
  function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
66
76
 
77
+ /// @dev Set the instance max staked amount to the specified value.
78
+ /// Permissioned: Only owner of the specified target.
79
+ function setInstanceMaxStakedAmount(NftId instanceNftId, Amount maxStakingAmount) external;
80
+
67
81
  /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
68
82
  /// unpermissioned: anybody may fill up staking reward reserves
69
83
  function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
@@ -108,7 +122,8 @@ interface IStakingService is IService
108
122
  )
109
123
  external
110
124
  returns (
111
- NftId newStakeNftId
125
+ NftId newStakeNftId,
126
+ Amount newStakeBalance
112
127
  );
113
128
 
114
129
 
@@ -145,13 +160,16 @@ interface IStakingService is IService
145
160
 
146
161
  function getDipToken()
147
162
  external
163
+ view
148
164
  returns (IERC20Metadata dip);
149
165
 
150
166
  function getTokenHandler()
151
167
  external
168
+ view
152
169
  returns (TokenHandler tokenHandler);
153
170
 
154
171
  function getStaking()
155
172
  external
173
+ view
156
174
  returns (IStaking staking);
157
175
  }
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {IRegistry} from "../registry/IRegistry.sol";
7
- import {IRegistryService} from "../registry/IRegistryService.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
8
8
  import {IStaking} from "./IStaking.sol";
9
9
  import {IVersionable} from "../upgradeability/IVersionable.sol";
10
10
 
@@ -13,9 +13,10 @@ import {Component} from "../shared/Component.sol";
13
13
  import {IComponent} from "../shared/IComponent.sol";
14
14
  import {IComponentService} from "../shared/IComponentService.sol";
15
15
  import {NftId} from "../type/NftId.sol";
16
- import {ObjectType, COMPONENT, STAKING} from "../type/ObjectType.sol";
16
+ import {ObjectType, STAKE, STAKING} from "../type/ObjectType.sol";
17
17
  import {Seconds} from "../type/Seconds.sol";
18
- import {StakeManagerLib} from "./StakeManagerLib.sol";
18
+ import {Registerable} from "../shared/Registerable.sol";
19
+ import {StakingLib} from "./StakingLib.sol";
19
20
  import {StakingReader} from "./StakingReader.sol";
20
21
  import {StakingStore} from "./StakingStore.sol";
21
22
  import {TargetManagerLib} from "./TargetManagerLib.sol";
@@ -24,7 +25,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
24
25
  import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
25
26
  import {TokenRegistry} from "../registry/TokenRegistry.sol";
26
27
  import {UFixed} from "../type/UFixed.sol";
27
- import {Version, VersionLib} from "../type/Version.sol";
28
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
28
29
  import {Versionable} from "../upgradeability/Versionable.sol";
29
30
 
30
31
  contract Staking is
@@ -38,7 +39,6 @@ contract Staking is
38
39
  bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
39
40
 
40
41
  struct StakingStorage {
41
- IRegistryService _registryService;
42
42
  TokenRegistry _tokenRegistry;
43
43
  TokenHandler _tokenHandler;
44
44
  StakingStore _store;
@@ -146,7 +146,8 @@ contract Staking is
146
146
  objectType: expectedObjectType,
147
147
  chainId: chainId,
148
148
  lockingPeriod: initialLockingPeriod,
149
- rewardRate: initialRewardRate}));
149
+ rewardRate: initialRewardRate,
150
+ maxStakedAmount: AmountLib.max()}));
150
151
  }
151
152
 
152
153
 
@@ -194,6 +195,21 @@ contract Staking is
194
195
  emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
195
196
  }
196
197
 
198
+ function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount)
199
+ external
200
+ virtual
201
+ restricted()
202
+ onlyTarget(targetNftId)
203
+ {
204
+ IStaking.TargetInfo memory targetInfo = getStakingReader().getTargetInfo(targetNftId);
205
+
206
+ targetInfo.maxStakedAmount = maxStakedAmount;
207
+
208
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
209
+
210
+ emit LogStakingMaxStakedAmountSet(targetNftId, maxStakedAmount);
211
+ }
212
+
197
213
 
198
214
  function refillRewardReserves(NftId targetNftId, Amount dipAmount)
199
215
  external
@@ -275,7 +291,7 @@ contract Staking is
275
291
  restricted() // only staking service
276
292
  {
277
293
  StakingStorage storage $ = _getStakingStorage();
278
- Timestamp lockedUntil = StakeManagerLib.checkCreateParameters(
294
+ Timestamp lockedUntil = StakingLib.checkCreateParameters(
279
295
  $._reader,
280
296
  targetNftId,
281
297
  stakeAmount);
@@ -305,7 +321,7 @@ contract Staking is
305
321
  returns (Amount stakeBalance)
306
322
  {
307
323
  StakingStorage storage $ = _getStakingStorage();
308
- stakeBalance = StakeManagerLib.stake(
324
+ stakeBalance = StakingLib.stake(
309
325
  getRegistry(),
310
326
  $._reader,
311
327
  $._store,
@@ -316,21 +332,26 @@ contract Staking is
316
332
 
317
333
  function restake(
318
334
  NftId stakeNftId,
319
- NftId newTargetNftId
335
+ NftId newStakeNftId
320
336
  )
321
337
  external
322
338
  virtual
323
339
  restricted() // only staking service
324
340
  onlyStake(stakeNftId)
325
- returns (NftId newStakeNftId)
341
+ returns (Amount newStakeBalance)
326
342
  {
343
+ _checkNftType(stakeNftId, STAKE());
344
+ _checkNftType(newStakeNftId, STAKE());
345
+
327
346
  // TODO add check that allows additional staking amount
328
347
  StakingStorage storage $ = _getStakingStorage();
329
-
330
- // TODO implement
348
+ newStakeBalance = StakingLib.restake(
349
+ $._reader,
350
+ $._store,
351
+ stakeNftId,
352
+ newStakeNftId);
331
353
  }
332
354
 
333
-
334
355
  function updateRewards(NftId stakeNftId)
335
356
  external
336
357
  virtual
@@ -379,7 +400,7 @@ contract Staking is
379
400
  {
380
401
  StakingStorage storage $ = _getStakingStorage();
381
402
 
382
- StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
403
+ StakingLib.checkUnstakeParameters($._reader, stakeNftId);
383
404
 
384
405
  // update rewards since last update
385
406
  NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
@@ -417,14 +438,24 @@ contract Staking is
417
438
  return _getStakingStorage()._tokenHandler;
418
439
  }
419
440
 
420
- // from Versionable
441
+ // from IRegisterable
442
+ function getRelease()
443
+ public
444
+ pure
445
+ virtual override (IRelease, Registerable)
446
+ returns(VersionPart)
447
+ {
448
+ return VersionPartLib.toVersionPart(3);
449
+ }
450
+
451
+ // from IVersionable
421
452
  function getVersion()
422
453
  public
423
454
  pure
424
- virtual override (IVersionable, Versionable)
455
+ virtual override (Component, IVersionable, Versionable)
425
456
  returns(Version)
426
457
  {
427
- return VersionLib.toVersion(GIF_RELEASE,0,0);
458
+ return VersionLib.toVersion(3,0,0);
428
459
  }
429
460
 
430
461
  //--- internal functions ------------------------------------------------//
@@ -441,7 +472,7 @@ contract Staking is
441
472
  UFixed rewardRate;
442
473
 
443
474
  (targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
444
- (Amount rewardIncrement, ) = StakeManagerLib.calculateRewardIncrease(
475
+ (Amount rewardIncrement, ) = StakingLib.calculateRewardIncrease(
445
476
  reader,
446
477
  stakeNftId,
447
478
  rewardRate);
@@ -457,7 +488,7 @@ contract Staking is
457
488
  internal
458
489
  virtual override
459
490
  {
460
- IComponentService(_getServiceAddress(COMPONENT())).approveStakingTokenHandler(
491
+ IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
461
492
  token,
462
493
  amount);
463
494
  }
@@ -484,6 +515,13 @@ contract Staking is
484
515
  TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
485
516
  address dipTokenAddress = tokenRegistry.getDipTokenAddress();
486
517
 
518
+ // wiring to external contracts
519
+ StakingStorage storage $ = _getStakingStorage();
520
+ $._protocolNftId = registry.getProtocolNftId();
521
+ $._store = StakingStore(stakingStoreAddress);
522
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
523
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
524
+
487
525
  _initializeComponent(
488
526
  authority,
489
527
  registryAddress,
@@ -496,13 +534,6 @@ contract Staking is
496
534
  "", // registry data
497
535
  ""); // component data
498
536
 
499
- // wiring to external contracts
500
- StakingStorage storage $ = _getStakingStorage();
501
- $._protocolNftId = getRegistry().getProtocolNftId();
502
- $._store = StakingStore(stakingStoreAddress);
503
- $._reader = StakingStore(stakingStoreAddress).getStakingReader();
504
- $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
505
-
506
537
  _registerInterface(type(IStaking).interfaceId);
507
538
  }
508
539
 
@@ -1,16 +1,10 @@
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
-
6
4
  import {Amount, AmountLib} from "../type/Amount.sol";
7
- import {Component} from "../shared/Component.sol";
8
5
  import {IRegistry} from "../registry/IRegistry.sol";
9
- import {IRegistryService} from "../registry/IRegistryService.sol";
10
6
  import {IStaking} from "./IStaking.sol";
11
- import {Key32} from "../type/Key32.sol";
12
7
  import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
14
8
  import {Seconds, SecondsLib} from "../type/Seconds.sol";
15
9
  import {StakingReader} from "./StakingReader.sol";
16
10
  import {StakingStore} from "./StakingStore.sol";
@@ -18,7 +12,7 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
18
12
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
13
 
20
14
 
21
- library StakeManagerLib {
15
+ library StakingLib {
22
16
 
23
17
  function stake(
24
18
  IRegistry registry,
@@ -51,7 +45,12 @@ library StakeManagerLib {
51
45
 
52
46
  // TODO check that additional dip, rewards and rewards increment
53
47
  // are still ok with max target staking amount
54
- NftId targetNftId = registry.getObjectInfo(stakeNftId).parentNftId;
48
+ NftId targetNftId = registry.getParentNftId(stakeNftId);
49
+ Amount maxStakedAmount = stakingReader.getTargetMaxStakedAmount(targetNftId);
50
+
51
+ if (stakeBalance > maxStakedAmount) {
52
+ revert IStaking.ErrorStakingTargetMaxStakedAmountExceeded(targetNftId, maxStakedAmount, stakeBalance);
53
+ }
55
54
 
56
55
  stakingStore.restakeRewards(
57
56
  stakeNftId,
@@ -72,6 +71,55 @@ library StakeManagerLib {
72
71
 
73
72
  }
74
73
 
74
+ function restake(
75
+ StakingReader stakingReader,
76
+ StakingStore stakingStore,
77
+ NftId oldStakeNftId,
78
+ NftId newStakeNftId
79
+ )
80
+ external
81
+ returns (Amount newStakeBalance)
82
+ {
83
+ checkUnstakeParameters(stakingReader, oldStakeNftId);
84
+ (NftId oldTargetNftId, UFixed oldRewardRate) = stakingReader.getTargetRewardRate(oldStakeNftId);
85
+
86
+ // calculate new rewards update and unstake full amount
87
+ (
88
+ Amount rewardIncrementAmount,
89
+ ) = calculateRewardIncrease(
90
+ stakingReader,
91
+ oldStakeNftId,
92
+ oldRewardRate);
93
+ stakingStore.updateRewards(
94
+ oldStakeNftId,
95
+ oldTargetNftId,
96
+ rewardIncrementAmount);
97
+ (
98
+ Amount unstakedAmount,
99
+ Amount rewardsAmount
100
+ ) = stakingStore.unstakeUpTo(
101
+ oldStakeNftId,
102
+ oldTargetNftId,
103
+ AmountLib.max(), // unstake all stakes
104
+ AmountLib.max()); // claim all rewards
105
+
106
+ // calculate full restake amount
107
+ newStakeBalance = unstakedAmount + rewardsAmount;
108
+ NftId newTargetNftId = stakingReader.getTargetNftId(newStakeNftId);
109
+
110
+ // create new staking target and increase stake
111
+ Timestamp newLockedUntil = _checkCreateParameters(stakingReader, newTargetNftId, newStakeBalance);
112
+ stakingStore.create(
113
+ newStakeNftId,
114
+ IStaking.StakeInfo({
115
+ lockedUntil: newLockedUntil
116
+ }));
117
+ stakingStore.increaseStake(
118
+ newStakeNftId,
119
+ newTargetNftId,
120
+ newStakeBalance);
121
+ }
122
+
75
123
  function checkCreateParameters(
76
124
  StakingReader stakingReader,
77
125
  NftId targetNftId,
@@ -82,6 +130,19 @@ library StakeManagerLib {
82
130
  returns (
83
131
  Timestamp lockedUntil
84
132
  )
133
+ {
134
+ return _checkCreateParameters(stakingReader, targetNftId, dipAmount);
135
+ }
136
+
137
+ function _checkCreateParameters(
138
+ StakingReader stakingReader,
139
+ NftId targetNftId,
140
+ Amount dipAmount
141
+ )
142
+ internal view
143
+ returns (
144
+ Timestamp lockedUntil
145
+ )
85
146
  {
86
147
  Seconds lockingPeriod = checkTarget(stakingReader, targetNftId);
87
148
  checkDipAmount(stakingReader, targetNftId, dipAmount);
@@ -104,11 +165,11 @@ library StakeManagerLib {
104
165
  {
105
166
  NftId targetNftId = stakingReader.getTargetNftId(stakeNftId);
106
167
 
107
- // only accept stakes for active targets
108
- if (!stakingReader.isActive(targetNftId)) {
109
- revert IStaking.ErrorStakingTargetNotActive(targetNftId);
168
+ // target nft id must be registered
169
+ if (!stakingReader.isTarget(targetNftId)) {
170
+ revert IStaking.ErrorStakingNotTarget(targetNftId);
110
171
  }
111
-
172
+
112
173
  IStaking.TargetInfo memory info = stakingReader.getTargetInfo(targetNftId);
113
174
  rewardRate = info.rewardRate;
114
175
  lockingPeriod = info.lockingPeriod;
@@ -121,12 +182,11 @@ library StakeManagerLib {
121
182
  public
122
183
  view
123
184
  returns (
124
- UFixed rewardRate,
125
185
  Seconds lockingPeriod
126
186
  )
127
187
  {
128
188
  IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
129
-
189
+
130
190
  if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
131
191
  revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
132
192
  }
@@ -146,11 +206,6 @@ library StakeManagerLib {
146
206
  revert IStaking.ErrorStakingNotTarget(targetNftId);
147
207
  }
148
208
 
149
- // only accept stakes for active targets
150
- if (!stakingReader.isActive(targetNftId)) {
151
- revert IStaking.ErrorStakingTargetNotActive(targetNftId);
152
- }
153
-
154
209
  lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
155
210
  }
156
211
 
@@ -161,14 +216,17 @@ library StakeManagerLib {
161
216
  Amount dipAmount
162
217
  )
163
218
  public
164
- pure
219
+ view
165
220
  {
166
221
  // check stake amount > 0
167
222
  if (dipAmount.eqz()) {
168
223
  revert IStaking.ErrorStakingStakeAmountZero(targetNftId);
169
224
  }
170
225
 
171
- // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
226
+ Amount maxStakedAmount = stakingReader.getTargetMaxStakedAmount(targetNftId);
227
+ if (dipAmount > maxStakedAmount) {
228
+ revert IStaking.ErrorStakingTargetMaxStakedAmountExceeded(targetNftId, maxStakedAmount, dipAmount);
229
+ }
172
230
  }
173
231
 
174
232
  function calculateRewardIncrease(
@@ -196,11 +254,10 @@ library StakeManagerLib {
196
254
  rewardRate,
197
255
  duration,
198
256
  stakeAmount);
199
-
257
+
200
258
  totalDipAmount = stakeAmount + rewardAmount + rewardIncreaseAmount;
201
259
  }
202
260
 
203
-
204
261
  function calculateRewardAmount(
205
262
  UFixed rewardRate,
206
263
  Seconds duration,
@@ -77,23 +77,8 @@ contract StakingReader is
77
77
  }
78
78
 
79
79
 
80
- function isActive(NftId targetNftId) external view returns (bool) {
81
- return _store.getTargetNftIdSet().isActive(targetNftId);
82
- }
83
-
84
-
85
- function activeTargets() external view returns (uint256) {
86
- return _store.getTargetNftIdSet().activeNftIds();
87
- }
88
-
89
-
90
- function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
91
- return _store.getTargetNftIdSet().getActiveNftId(idx);
92
- }
93
-
94
-
95
80
  function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
96
- return _registry.getObjectInfo(stakeNftId).parentNftId;
81
+ return _registry.getParentNftId(stakeNftId);
97
82
  }
98
83
 
99
84
 
@@ -119,6 +104,11 @@ contract StakingReader is
119
104
  rewardRate = getTargetInfo(targetNftId).rewardRate;
120
105
  }
121
106
 
107
+ /// @dev get the max staked amount allowed for the specified target nft id.
108
+ function getTargetMaxStakedAmount(NftId targetNftId) external view returns (Amount maxStakedAmount) {
109
+ return getTargetInfo(targetNftId).maxStakedAmount;
110
+ }
111
+
122
112
 
123
113
  /// @dev get the reward rate for the specified target nft id.
124
114
  function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {