@etherisc/gif-next 0.0.2-f78c672-338 → 0.0.2-f78f882-351

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 (478) hide show
  1. package/README.md +63 -312
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +655 -299
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +331 -56
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +501 -231
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +131 -16
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +63 -59
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +322 -67
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -33
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +379 -150
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +160 -78
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -32
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +233 -20
  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 +109 -110
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +321 -66
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -134
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +321 -66
  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 +82 -84
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +321 -66
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +321 -66
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +333 -190
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +321 -66
  63. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  64. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  67. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  68. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +450 -28
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +355 -12
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +488 -85
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +942 -471
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +289 -78
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +595 -532
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -64
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -52
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1316 -2015
  87. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  88. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -45
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +340 -60
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -31
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -31
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +321 -66
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +300 -123
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +186 -33
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -41
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +238 -19
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -41
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +100 -34
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +346 -87
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +218 -61
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +113 -43
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +321 -66
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -52
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +511 -21
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +91 -118
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +113 -67
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +40 -52
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -43
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +71 -60
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +799 -472
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +841 -419
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +197 -129
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +19 -31
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +212 -232
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +133 -71
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -31
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +119 -147
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -31
  243. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  254. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  263. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1453 -153
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +161 -110
  266. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  267. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  268. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -239
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +146 -67
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +200 -157
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +98 -44
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
  282. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  291. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  302. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  306. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
  319. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  326. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  328. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  330. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  332. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
  334. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  336. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  337. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
  338. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  340. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  342. package/contracts/accounting/AccountingService.sol +15 -3
  343. package/contracts/accounting/IAccountingService.sol +4 -2
  344. package/contracts/authorization/AccessAdmin.sol +361 -371
  345. package/contracts/authorization/AccessAdminLib.sol +678 -0
  346. package/contracts/authorization/AccessManagerCloneable.sol +23 -32
  347. package/contracts/authorization/Authorization.sol +82 -229
  348. package/contracts/authorization/IAccess.sol +29 -12
  349. package/contracts/authorization/IAccessAdmin.sol +83 -84
  350. package/contracts/authorization/IAuthorization.sol +3 -51
  351. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  352. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  353. package/contracts/distribution/BasicDistribution.sol +5 -7
  354. package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
  355. package/contracts/distribution/Distribution.sol +12 -17
  356. package/contracts/distribution/DistributionService.sol +129 -66
  357. package/contracts/distribution/IDistributionComponent.sol +3 -1
  358. package/contracts/distribution/IDistributionService.sol +21 -9
  359. package/contracts/examples/fire/FirePool.sol +0 -4
  360. package/contracts/examples/fire/FireProduct.sol +6 -10
  361. package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -8
  362. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  363. package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
  364. package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -23
  365. package/contracts/instance/BaseStore.sol +93 -0
  366. package/contracts/instance/IBaseStore.sol +37 -0
  367. package/contracts/instance/IInstance.sol +98 -12
  368. package/contracts/instance/IInstanceService.sol +54 -7
  369. package/contracts/instance/Instance.sol +165 -61
  370. package/contracts/instance/InstanceAdmin.sol +183 -313
  371. package/contracts/instance/InstanceAuthorizationV3.sol +123 -61
  372. package/contracts/instance/InstanceReader.sol +350 -394
  373. package/contracts/instance/InstanceService.sol +283 -173
  374. package/contracts/instance/InstanceStore.sol +153 -128
  375. package/contracts/instance/ProductStore.sol +290 -0
  376. package/contracts/instance/RiskSet.sol +10 -2
  377. package/contracts/instance/TargetNames.sol +10 -0
  378. package/contracts/instance/base/BalanceStore.sol +4 -6
  379. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  380. package/contracts/instance/module/IBundle.sol +6 -5
  381. package/contracts/instance/module/IComponents.sol +15 -6
  382. package/contracts/instance/module/IDistribution.sol +17 -7
  383. package/contracts/instance/module/IPolicy.sol +28 -8
  384. package/contracts/instance/module/IRisk.sol +2 -0
  385. package/contracts/oracle/BasicOracle.sol +3 -6
  386. package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
  387. package/contracts/oracle/IOracle.sol +9 -4
  388. package/contracts/oracle/Oracle.sol +4 -8
  389. package/contracts/oracle/OracleService.sol +8 -8
  390. package/contracts/pool/BasicPool.sol +4 -18
  391. package/contracts/pool/BasicPoolAuthorization.sol +10 -5
  392. package/contracts/pool/BundleService.sol +34 -43
  393. package/contracts/pool/IBundleService.sol +14 -13
  394. package/contracts/pool/IPoolService.sol +7 -2
  395. package/contracts/pool/Pool.sol +6 -20
  396. package/contracts/pool/PoolLib.sol +127 -2
  397. package/contracts/pool/PoolService.sol +41 -184
  398. package/contracts/product/ApplicationService.sol +65 -12
  399. package/contracts/product/BasicProduct.sol +2 -5
  400. package/contracts/product/BasicProductAuthorization.sol +11 -4
  401. package/contracts/product/ClaimService.sol +99 -105
  402. package/contracts/product/IApplicationService.sol +21 -2
  403. package/contracts/product/IClaimService.sol +5 -4
  404. package/contracts/product/IPolicyService.sol +9 -2
  405. package/contracts/product/IRiskService.sol +18 -3
  406. package/contracts/product/PolicyService.sol +40 -77
  407. package/contracts/product/PolicyServiceLib.sol +79 -5
  408. package/contracts/product/PricingService.sol +29 -32
  409. package/contracts/product/Product.sol +40 -18
  410. package/contracts/product/RiskService.sol +50 -15
  411. package/contracts/registry/IRegistry.sol +15 -9
  412. package/contracts/registry/IRelease.sol +6 -3
  413. package/contracts/registry/Registry.sol +15 -9
  414. package/contracts/registry/RegistryAdmin.sol +85 -266
  415. package/contracts/registry/RegistryAuthorization.sol +337 -0
  416. package/contracts/registry/RegistryService.sol +1 -1
  417. package/contracts/registry/ReleaseAdmin.sol +70 -116
  418. package/contracts/registry/ReleaseRegistry.sol +57 -43
  419. package/contracts/registry/ServiceAuthorizationV3.sol +128 -33
  420. package/contracts/registry/TokenRegistry.sol +56 -52
  421. package/contracts/shared/Component.sol +20 -37
  422. package/contracts/shared/ComponentService.sol +249 -250
  423. package/contracts/shared/ContractLib.sol +134 -75
  424. package/contracts/shared/IComponent.sol +1 -4
  425. package/contracts/shared/IComponentService.sol +21 -22
  426. package/contracts/shared/INftOwnable.sol +2 -0
  427. package/contracts/shared/IRegisterable.sol +0 -1
  428. package/contracts/shared/InitializableERC165.sol +9 -1
  429. package/contracts/shared/InstanceLinkedComponent.sol +6 -11
  430. package/contracts/shared/NftOwnable.sol +4 -2
  431. package/contracts/shared/PolicyHolder.sol +3 -2
  432. package/contracts/shared/Registerable.sol +1 -4
  433. package/contracts/shared/Service.sol +6 -4
  434. package/contracts/shared/TokenHandler.sol +5 -4
  435. package/contracts/staking/IStaking.sol +265 -64
  436. package/contracts/staking/IStakingService.sol +44 -82
  437. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  438. package/contracts/staking/Staking.sol +475 -204
  439. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  440. package/contracts/staking/StakingManager.sol +4 -3
  441. package/contracts/staking/StakingReader.sol +58 -77
  442. package/contracts/staking/StakingService.sol +49 -158
  443. package/contracts/staking/StakingServiceManager.sol +1 -0
  444. package/contracts/staking/StakingStore.sol +1093 -330
  445. package/contracts/staking/TargetHandler.sol +132 -0
  446. package/contracts/staking/TargetManagerLib.sol +69 -46
  447. package/contracts/type/Amount.sol +4 -0
  448. package/contracts/type/Blocknumber.sol +17 -22
  449. package/contracts/type/ChainId.sol +101 -0
  450. package/contracts/type/Fee.sol +8 -8
  451. package/contracts/type/NftId.sol +3 -3
  452. package/contracts/type/ObjectType.sol +21 -17
  453. package/contracts/type/RoleId.sol +57 -59
  454. package/contracts/type/Seconds.sol +19 -0
  455. package/contracts/type/String.sol +12 -0
  456. package/contracts/type/Timestamp.sol +4 -2
  457. package/contracts/type/UFixed.sol +28 -10
  458. package/contracts/type/Version.sol +39 -0
  459. package/contracts/upgradeability/IVersionable.sol +3 -0
  460. package/contracts/upgradeability/ProxyManager.sol +26 -12
  461. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  462. package/contracts/upgradeability/Versionable.sol +6 -3
  463. package/package.json +1 -1
  464. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  465. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  466. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  467. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  468. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  469. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  470. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  471. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  472. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  473. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  474. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  475. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  476. package/contracts/shared/IKeyValueStore.sol +0 -54
  477. package/contracts/shared/KeyValueStore.sol +0 -131
  478. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,84 +1,44 @@
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
- import {Amount, AmountLib} from "../type/Amount.sol";
7
- import {Component} from "../shared/Component.sol";
8
4
  import {IRegistry} from "../registry/IRegistry.sol";
9
- import {IRegistryService} from "../registry/IRegistryService.sol";
10
5
  import {IStaking} from "./IStaking.sol";
11
- import {Key32} from "../type/Key32.sol";
6
+ import {IStakingService} from "./IStakingService.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
12
9
  import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
10
+ import {ReleaseRegistry} from "../registry/ReleaseRegistry.sol";
14
11
  import {Seconds, SecondsLib} from "../type/Seconds.sol";
15
12
  import {StakingReader} from "./StakingReader.sol";
16
- import {StakingStore} from "./StakingStore.sol";
13
+ import {STAKING} from "../type/ObjectType.sol";
17
14
  import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
18
15
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
16
+ import {VersionPart} from "../type/Version.sol";
19
17
 
20
18
 
21
- library StakeManagerLib {
19
+ library StakingLib {
22
20
 
23
- function stake(
24
- IRegistry registry,
21
+ function checkCreateParameters(
25
22
  StakingReader stakingReader,
26
- StakingStore stakingStore,
27
- NftId stakeNftId,
28
- Amount stakeAmount
23
+ NftId targetNftId,
24
+ Amount dipAmount
29
25
  )
30
26
  external
31
- returns (Amount stakeBalance)
27
+ view
28
+ returns (
29
+ Timestamp lockedUntil
30
+ )
32
31
  {
33
- // check that target is active for staking
34
- (
35
- UFixed rewardRate,
36
- Seconds lockingPeriod
37
- ) = checkStakeParameters(
38
- stakingReader,
39
- stakeNftId);
40
-
41
- // calculate new rewards (if any)
42
- (
43
- Amount rewardIncrementAmount,
44
- Amount currentTotalDipAmount
45
- ) = calculateRewardIncrease(
46
- stakingReader,
47
- stakeNftId,
48
- rewardRate);
49
-
50
- stakeBalance = currentTotalDipAmount + stakeAmount;
51
-
52
- // TODO check that additional dip, rewards and rewards increment
53
- // are still ok with max target staking amount
54
- NftId targetNftId = registry.getParentNftId(stakeNftId);
55
-
56
- stakingStore.restakeRewards(
57
- stakeNftId,
58
- targetNftId,
59
- rewardIncrementAmount);
60
-
61
- stakingStore.increaseStake(
62
- stakeNftId,
63
- targetNftId,
64
- stakeAmount);
65
-
66
- // update locked until with target locking period
67
- stakingStore.update(
68
- stakeNftId,
69
- IStaking.StakeInfo({
70
- lockedUntil: TimestampLib.blockTimestamp().addSeconds(
71
- lockingPeriod)}));
72
-
32
+ return _checkCreateParameters(stakingReader, targetNftId, dipAmount);
73
33
  }
74
34
 
75
- function checkCreateParameters(
35
+
36
+ function _checkCreateParameters(
76
37
  StakingReader stakingReader,
77
38
  NftId targetNftId,
78
39
  Amount dipAmount
79
40
  )
80
- external
81
- view
41
+ internal view
82
42
  returns (
83
43
  Timestamp lockedUntil
84
44
  )
@@ -86,7 +46,7 @@ library StakeManagerLib {
86
46
  Seconds lockingPeriod = checkTarget(stakingReader, targetNftId);
87
47
  checkDipAmount(stakingReader, targetNftId, dipAmount);
88
48
 
89
- Timestamp currentTime = TimestampLib.blockTimestamp();
49
+ Timestamp currentTime = TimestampLib.current();
90
50
  lockedUntil = currentTime.addSeconds(lockingPeriod);
91
51
  }
92
52
 
@@ -104,16 +64,17 @@ library StakeManagerLib {
104
64
  {
105
65
  NftId targetNftId = stakingReader.getTargetNftId(stakeNftId);
106
66
 
107
- // only accept stakes for active targets
108
- if (!stakingReader.isActive(targetNftId)) {
109
- revert IStaking.ErrorStakingTargetNotActive(targetNftId);
67
+ // target nft id must be registered
68
+ if (!stakingReader.isTarget(targetNftId)) {
69
+ revert IStaking.ErrorStakingNotTarget(targetNftId);
110
70
  }
111
-
71
+
112
72
  IStaking.TargetInfo memory info = stakingReader.getTargetInfo(targetNftId);
113
73
  rewardRate = info.rewardRate;
114
74
  lockingPeriod = info.lockingPeriod;
115
75
  }
116
76
 
77
+
117
78
  function checkUnstakeParameters(
118
79
  StakingReader stakingReader,
119
80
  NftId stakeNftId
@@ -121,13 +82,12 @@ library StakeManagerLib {
121
82
  public
122
83
  view
123
84
  returns (
124
- UFixed rewardRate,
125
85
  Seconds lockingPeriod
126
86
  )
127
87
  {
128
88
  IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
129
-
130
- if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
89
+
90
+ if (stakeInfo.lockedUntil > TimestampLib.current()) {
131
91
  revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
132
92
  }
133
93
  }
@@ -146,12 +106,28 @@ library StakeManagerLib {
146
106
  revert IStaking.ErrorStakingNotTarget(targetNftId);
147
107
  }
148
108
 
149
- // only accept stakes for active targets
150
- if (!stakingReader.isActive(targetNftId)) {
151
- revert IStaking.ErrorStakingTargetNotActive(targetNftId);
109
+ lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
110
+ }
111
+
112
+
113
+ function checkAndGetStakingService(
114
+ IRegistry registry,
115
+ VersionPart release
116
+ )
117
+ public
118
+ view
119
+ returns (IStakingService stakingService)
120
+ {
121
+ if (!ReleaseRegistry(registry.getReleaseRegistryAddress()).isActiveRelease(release)) {
122
+ revert IStaking.ErrorStakingReleaseNotActive(release);
123
+ }
124
+
125
+ address stakingServiceAddress = registry.getServiceAddress(STAKING(), release);
126
+ if (stakingServiceAddress == address(0)) {
127
+ revert IStaking.ErrorStakingServiceNotFound(release);
152
128
  }
153
129
 
154
- lockingPeriod = stakingReader.getTargetInfo(targetNftId).lockingPeriod;
130
+ return IStakingService(stakingServiceAddress);
155
131
  }
156
132
 
157
133
 
@@ -161,14 +137,17 @@ library StakeManagerLib {
161
137
  Amount dipAmount
162
138
  )
163
139
  public
164
- pure
140
+ view
165
141
  {
166
142
  // check stake amount > 0
167
143
  if (dipAmount.eqz()) {
168
144
  revert IStaking.ErrorStakingStakeAmountZero(targetNftId);
169
145
  }
170
146
 
171
- // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
147
+ Amount stakeLimitAmount = stakingReader.getTargetMaxStakedAmount(targetNftId);
148
+ if (dipAmount > stakeLimitAmount) {
149
+ revert IStaking.ErrorStakingTargetMaxStakedAmountExceeded(targetNftId, stakeLimitAmount, dipAmount);
150
+ }
172
151
  }
173
152
 
174
153
  function calculateRewardIncrease(
@@ -179,28 +158,20 @@ library StakeManagerLib {
179
158
  public
180
159
  view
181
160
  returns (
182
- Amount rewardIncreaseAmount,
183
- Amount totalDipAmount
161
+ Amount rewardIncreaseAmount
184
162
  )
185
163
  {
186
- (
187
- Amount stakeAmount,
188
- Amount rewardAmount,
189
- Timestamp lastUpdatedAt
190
- ) = stakingReader.getStakeBalances(stakeNftId);
164
+ IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
191
165
 
192
166
  Seconds duration = SecondsLib.toSeconds(
193
- block.timestamp - lastUpdatedAt.toInt());
167
+ block.timestamp - stakeInfo.lastUpdateAt.toInt());
194
168
 
195
169
  rewardIncreaseAmount = calculateRewardAmount(
196
170
  rewardRate,
197
171
  duration,
198
- stakeAmount);
199
-
200
- totalDipAmount = stakeAmount + rewardAmount + rewardIncreaseAmount;
172
+ stakeInfo.stakedAmount);
201
173
  }
202
174
 
203
-
204
175
  function calculateRewardAmount(
205
176
  UFixed rewardRate,
206
177
  Seconds duration,
@@ -16,8 +16,9 @@ contract StakingManager is
16
16
  /// @dev initializes proxy manager with service implementation
17
17
  constructor(
18
18
  address registry,
19
- address tokenRegistry,
19
+ address targetHandler,
20
20
  address stakingStore,
21
+ address tokenRegistry,
21
22
  address initialOwner,
22
23
  bytes32 salt
23
24
  )
@@ -27,9 +28,9 @@ contract StakingManager is
27
28
  _initialImplementation = address(stakingImplementation);
28
29
  _initializationData = abi.encode(
29
30
  registry,
30
- tokenRegistry,
31
+ targetHandler,
31
32
  stakingStore,
32
- initialOwner);
33
+ tokenRegistry);
33
34
 
34
35
  IVersionable versionable = initialize(
35
36
  registry,
@@ -7,14 +7,18 @@ import {IRegistry} from "../registry/IRegistry.sol";
7
7
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
8
8
  import {IStaking} from "../staking/IStaking.sol";
9
9
 
10
- import {Amount} from "../type/Amount.sol";
10
+ import {Amount, AmountLib} from "../type/Amount.sol";
11
11
  import {Blocknumber} from "../type/Blocknumber.sol";
12
+ import {ChainId} from "../type/ChainId.sol";
12
13
  import {NftId} from "../type/NftId.sol";
13
- import {STAKE, TARGET} from "../type/ObjectType.sol";
14
+ import {ObjectType} from "../type/ObjectType.sol";
15
+ import {Seconds} from "../type/Seconds.sol";
14
16
  import {StakingStore} from "./StakingStore.sol";
17
+ import {STAKE, TARGET} from "../type/ObjectType.sol";
15
18
  import {Timestamp} from "../type/Timestamp.sol";
16
19
  import {UFixed} from "../type/UFixed.sol";
17
20
 
21
+
18
22
  contract StakingReader is
19
23
  IRegistryLinked,
20
24
  Initializable
@@ -57,134 +61,111 @@ contract StakingReader is
57
61
  return _staking;
58
62
  }
59
63
 
60
- function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
61
- return _store.getStakingRate(chainId, token);
64
+ function getProtocolNftId() external view returns (NftId protocolNftId) {
65
+ return _registry.getProtocolNftId();
62
66
  }
63
67
 
64
68
 
65
69
  function isTarget(NftId targetNftId) external view returns (bool) {
66
- return _store.getTargetNftIdSet().exists(targetNftId);
70
+ return _store.getTargetSet().exists(targetNftId);
67
71
  }
68
72
 
69
73
 
70
74
  function targets() external view returns (uint256) {
71
- return _store.getTargetNftIdSet().nftIds();
75
+ return _store.getTargetSet().nftIds();
72
76
  }
73
77
 
74
78
 
75
79
  function getTargetNftId(uint256 idx) external view returns (NftId) {
76
- return _store.getTargetNftIdSet().getNftId(idx);
80
+ return _store.getTargetSet().getNftId(idx);
77
81
  }
78
82
 
79
83
 
80
- function isActive(NftId targetNftId) external view returns (bool) {
81
- return _store.getTargetNftIdSet().isActive(targetNftId);
84
+ function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
85
+ return _registry.getParentNftId(stakeNftId);
82
86
  }
83
87
 
84
88
 
85
- function activeTargets() external view returns (uint256) {
86
- return _store.getTargetNftIdSet().activeNftIds();
89
+ function getStakeInfo(NftId stakeNftId) external view returns (IStaking.StakeInfo memory stakeInfo) {
90
+ return _store.getStakeInfo(stakeNftId);
87
91
  }
88
92
 
89
93
 
90
- function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
91
- return _store.getTargetNftIdSet().getActiveNftId(idx);
94
+ function getTargetInfo(NftId targetNftId) public view returns (IStaking.TargetInfo memory info) {
95
+ return _store.getTargetInfo(targetNftId);
92
96
  }
93
97
 
94
98
 
95
- function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
96
- return _registry.getParentNftId(stakeNftId);
99
+ function getLimitInfo(NftId targetNftId) public view returns (IStaking.LimitInfo memory info) {
100
+ return _store.getLimitInfo(targetNftId);
97
101
  }
98
102
 
99
103
 
100
- function getTargetInfo(NftId targetNftId) public view returns (IStaking.TargetInfo memory info) {
101
- bytes memory data = _store.getData(targetNftId.toKey32(TARGET()));
102
- if (data.length > 0) {
103
- return abi.decode(data, (IStaking.TargetInfo));
104
- }
104
+ function getTvlInfo(NftId targetNftId, address token) public view returns (IStaking.TvlInfo memory info) {
105
+ return _store.getTvlInfo(targetNftId, token);
105
106
  }
106
107
 
107
108
 
108
- function getStakeInfo(NftId stakeNftId) external view returns (IStaking.StakeInfo memory stakeInfo) {
109
- bytes memory data = _store.getData(stakeNftId.toKey32(STAKE()));
110
- if (data.length > 0) {
111
- return abi.decode(data, (IStaking.StakeInfo));
112
- }
109
+ function getTokenInfo(ChainId chainId, address token) public view returns (IStaking.TokenInfo memory info) {
110
+ return _store.getTokenInfo(chainId, token);
113
111
  }
114
112
 
115
113
 
116
- /// @dev get the reward rate that applies to the specified stake nft id.
117
- function getTargetRewardRate(NftId stakeNftId) external view returns (NftId targetNftId, UFixed rewardRate) {
118
- targetNftId = getTargetNftId(stakeNftId);
119
- rewardRate = getTargetInfo(targetNftId).rewardRate;
114
+ function isSupportedTargetType(ObjectType targetType) public view returns (bool) {
115
+ return _store.getSupportInfo(targetType).isSupported;
120
116
  }
121
117
 
122
118
 
123
- /// @dev get the reward rate for the specified target nft id.
124
- function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {
125
- return getTargetInfo(targetNftId).rewardRate;
119
+ function getSupportInfo(ObjectType targetType) public view returns (IStaking.SupportInfo memory info) {
120
+ return _store.getSupportInfo(targetType);
126
121
  }
127
122
 
128
- /// @dev returns the current reward reserve balance for the specified target.
129
- function getReserveBalance(NftId targetNftId) external view returns (Amount rewardReserveBalance) {
130
- return _store.getReserveBalance(targetNftId);
123
+
124
+ /// @dev Get the locking period that applies to the specified stake NFT ID.
125
+ function getTargetLockingPeriod(NftId stakeNftId) external view returns (NftId targetNftId, Seconds lockingPeriod) {
126
+ targetNftId = getTargetNftId(stakeNftId);
127
+ lockingPeriod = getTargetInfo(targetNftId).lockingPeriod;
131
128
  }
132
129
 
133
- function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) {
134
- return _store.getStakeBalance(nftId);
130
+
131
+ /// @dev Get the reward rate that applies to the specified stake NFT ID.
132
+ function getTargetRewardRate(NftId stakeNftId) external view returns (NftId targetNftId, UFixed rewardRate) {
133
+ targetNftId = getTargetNftId(stakeNftId);
134
+ rewardRate = getTargetInfo(targetNftId).rewardRate;
135
135
  }
136
136
 
137
- function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) {
138
- return _store.getRewardBalance(nftId);
137
+
138
+ /// @dev Get the max staked amount allowed for the specified target NFT ID.
139
+ function getTargetMaxStakedAmount(NftId targetNftId) external view returns (Amount maxStakedAmount) {
140
+ return getTargetInfo(targetNftId).limitAmount;
139
141
  }
140
142
 
141
- function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) {
142
- return _store.getBalanceUpdatedAt(nftId);
143
+
144
+ /// @dev Get the reward rate for the specified target NFT ID.
145
+ function getLockingPeriod(NftId targetNftId) external view returns (Seconds lockingPeriod) {
146
+ return getTargetInfo(targetNftId).lockingPeriod;
143
147
  }
144
148
 
145
- function getBalanceUpdatedIn(NftId nftId) external view returns (Blocknumber blocknumber) {
146
- return _store.getBalanceUpdatedIn(nftId);
149
+
150
+ /// @dev Get the reward rate for the specified target NFT ID.
151
+ function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {
152
+ return getTargetInfo(targetNftId).rewardRate;
147
153
  }
148
154
 
149
- function getTotalValueLocked(NftId nftId, address token) external view returns (Amount totalValueLocked) {
150
- return _store.getTotalValueLocked(nftId, token);
155
+ /// @dev returns the current reward reserve balance for the specified target.
156
+ function getReserveBalance(NftId targetNftId) external view returns (Amount rewardReserveBalance) {
157
+ return getTargetInfo(targetNftId).reserveAmount;
151
158
  }
152
159
 
153
- function getRequiredStakeBalance(NftId nftId) external view returns (Amount requiredStakedAmount) {
154
- return _store.getRequiredStakeBalance(nftId);
160
+ function getTotalValueLocked(NftId targetNftId, address token) external view returns (Amount totalValueLocked) {
161
+ return _store.getTvlInfo(targetNftId, token).tvlAmount;
155
162
  }
156
163
 
157
- function getTargetBalances(NftId stakeNftId)
158
- public
159
- view
160
- returns (
161
- Amount balanceAmount,
162
- Amount stakeAmount,
163
- Amount rewardAmount,
164
- Blocknumber lastUpdatedIn
165
- )
166
- {
167
- (
168
- balanceAmount,
169
- stakeAmount,
170
- rewardAmount,
171
- lastUpdatedIn
172
- ) = _store.getTargetBalances(stakeNftId);
164
+ function getRequiredStakeBalance(NftId targetNftId) external view returns (Amount requiredStakedAmount) {
165
+ return _store.getRequiredStakeBalance(targetNftId, true);
173
166
  }
174
167
 
175
- function getStakeBalances(NftId stakeNftId)
176
- external
177
- view
178
- returns (
179
- Amount stakeAmount,
180
- Amount rewardAmount,
181
- Timestamp lastUpdatedAt
182
- )
183
- {
184
- (
185
- stakeAmount,
186
- rewardAmount,
187
- lastUpdatedAt
188
- ) = _store.getStakeBalances(stakeNftId);
168
+ function getRequiredStakeBalance(NftId targetNftId, bool includeTargetTypeRequirements) external view returns (Amount requiredStakedAmount) {
169
+ return _store.getRequiredStakeBalance(targetNftId, includeTargetTypeRequirements);
189
170
  }
190
171
  }