@etherisc/gif-next 0.0.2-7f39e38-904 → 0.0.2-804cdbf-724

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 (441) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +36 -255
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +147 -96
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +86 -59
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +82 -151
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -17
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -78
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +149 -52
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +91 -132
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +230 -65
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +216 -119
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +70 -51
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +260 -137
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -59
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +74 -43
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +20 -1
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +18 -207
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +35 -1
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +25 -315
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +84 -42
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -40
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +79 -36
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -37
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +119 -68
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +88 -53
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +20 -1
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +20 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +24 -47
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.json +20 -1
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +97 -46
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +77 -42
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +105 -62
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +81 -50
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  144. package/artifacts/contracts/product/Product.sol/Product.json +31 -165
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +61 -26
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +59 -32
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +86 -74
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -184
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +255 -112
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -15
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +51 -35
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +19 -11
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +96 -70
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +73 -54
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  179. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +20 -1
  180. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -1
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +24 -5
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -15
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  197. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  200. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  203. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +31 -65
  205. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -99
  207. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  209. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  211. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  213. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  215. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +35 -16
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +14 -8
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  221. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  225. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  226. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  227. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +121 -118
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +222 -71
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +102 -44
  234. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  235. package/artifacts/contracts/staking/Staking.sol/Staking.json +186 -183
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +71 -58
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +263 -39
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +271 -135
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +67 -47
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +734 -187
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +95 -18
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  288. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  296. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  300. package/contracts/authorization/AccessAdmin.sol +591 -0
  301. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  302. package/contracts/authorization/Authorization.sol +218 -0
  303. package/contracts/authorization/IAccess.sol +48 -0
  304. package/contracts/authorization/IAccessAdmin.sol +136 -0
  305. package/contracts/authorization/IAuthorization.sol +54 -0
  306. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  307. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  308. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  309. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  310. package/contracts/distribution/BasicDistribution.sol +149 -0
  311. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  312. package/contracts/distribution/Distribution.sol +126 -106
  313. package/contracts/distribution/DistributionService.sol +13 -9
  314. package/contracts/distribution/DistributionServiceManager.sol +0 -12
  315. package/contracts/distribution/IDistributionComponent.sol +17 -35
  316. package/contracts/distribution/IDistributionService.sol +5 -1
  317. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  318. package/contracts/instance/IInstance.sol +25 -16
  319. package/contracts/instance/IInstanceService.sol +36 -27
  320. package/contracts/instance/Instance.sol +113 -87
  321. package/contracts/instance/InstanceAdmin.sol +266 -0
  322. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  323. package/contracts/instance/InstanceReader.sol +52 -13
  324. package/contracts/instance/InstanceService.sol +175 -99
  325. package/contracts/instance/InstanceStore.sol +38 -22
  326. package/contracts/instance/base/BalanceStore.sol +11 -6
  327. package/contracts/instance/base/Cloneable.sol +2 -25
  328. package/contracts/instance/base/ObjectCounter.sol +21 -0
  329. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  330. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  331. package/contracts/instance/module/IAccess.sol +2 -10
  332. package/contracts/oracle/BasicOracle.sol +48 -0
  333. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  334. package/contracts/oracle/IOracle.sol +36 -0
  335. package/contracts/oracle/IOracleComponent.sol +32 -0
  336. package/contracts/oracle/IOracleService.sol +65 -0
  337. package/contracts/oracle/Oracle.sol +157 -0
  338. package/contracts/oracle/OracleService.sol +278 -0
  339. package/contracts/oracle/OracleServiceManager.sol +42 -0
  340. package/contracts/pool/BasicPool.sol +164 -0
  341. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  342. package/contracts/pool/BundleService.sol +26 -26
  343. package/contracts/pool/IPoolComponent.sol +0 -60
  344. package/contracts/pool/IPoolService.sol +3 -0
  345. package/contracts/pool/Pool.sol +143 -131
  346. package/contracts/pool/PoolService.sol +38 -11
  347. package/contracts/product/ApplicationService.sol +5 -5
  348. package/contracts/product/BasicProduct.sol +82 -0
  349. package/contracts/product/BasicProductAuthorization.sol +40 -0
  350. package/contracts/product/ClaimService.sol +11 -6
  351. package/contracts/product/IClaimService.sol +6 -0
  352. package/contracts/product/IProductComponent.sol +6 -9
  353. package/contracts/product/PolicyService.sol +8 -6
  354. package/contracts/product/PricingService.sol +7 -8
  355. package/contracts/product/Product.sol +103 -88
  356. package/contracts/product/ProductService.sol +5 -5
  357. package/contracts/registry/ChainNft.sol +1 -0
  358. package/contracts/registry/IRegistry.sol +33 -24
  359. package/contracts/registry/IRegistryService.sol +7 -6
  360. package/contracts/registry/Registry.sol +146 -148
  361. package/contracts/registry/RegistryAdmin.sol +365 -0
  362. package/contracts/registry/RegistryService.sol +8 -8
  363. package/contracts/registry/RegistryServiceManager.sol +0 -19
  364. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  365. package/contracts/registry/ReleaseRegistry.sol +487 -0
  366. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  367. package/contracts/registry/TokenRegistry.sol +22 -61
  368. package/contracts/shared/Component.sol +8 -13
  369. package/contracts/shared/ComponentService.sol +50 -64
  370. package/contracts/shared/ComponentVerifyingService.sol +13 -7
  371. package/contracts/shared/IComponent.sol +3 -7
  372. package/contracts/shared/IComponentService.sol +11 -0
  373. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  374. package/contracts/shared/IKeyValueStore.sol +2 -1
  375. package/contracts/shared/ILifecycle.sol +1 -2
  376. package/contracts/shared/INftOwnable.sol +1 -1
  377. package/contracts/shared/IService.sol +7 -0
  378. package/contracts/shared/InitializableCustom.sol +177 -0
  379. package/contracts/shared/InstanceLinkedComponent.sol +26 -20
  380. package/contracts/shared/KeyValueStore.sol +7 -6
  381. package/contracts/shared/Lifecycle.sol +16 -60
  382. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  383. package/contracts/shared/NftOwnable.sol +2 -13
  384. package/contracts/shared/PolicyHolder.sol +2 -1
  385. package/contracts/shared/ProxyManager.sol +6 -3
  386. package/contracts/shared/Service.sol +27 -21
  387. package/contracts/shared/UpgradableProxyWithAdmin.sol +1 -3
  388. package/contracts/staking/IStaking.sol +40 -25
  389. package/contracts/staking/IStakingService.sol +42 -44
  390. package/contracts/staking/StakeManagerLib.sol +101 -26
  391. package/contracts/staking/Staking.sol +136 -127
  392. package/contracts/staking/StakingLifecycle.sol +23 -0
  393. package/contracts/staking/StakingManager.sol +10 -22
  394. package/contracts/staking/StakingReader.sol +75 -36
  395. package/contracts/staking/StakingService.sol +124 -88
  396. package/contracts/staking/StakingServiceManager.sol +2 -2
  397. package/contracts/staking/StakingStore.sol +401 -115
  398. package/contracts/staking/TargetManagerLib.sol +28 -0
  399. package/contracts/type/Amount.sol +15 -1
  400. package/contracts/type/NftId.sol +8 -8
  401. package/contracts/type/ObjectType.sol +171 -69
  402. package/contracts/type/RequestId.sol +75 -0
  403. package/contracts/type/RoleId.sol +103 -72
  404. package/contracts/type/Seconds.sol +10 -0
  405. package/contracts/type/Selector.sol +102 -0
  406. package/contracts/type/StateId.sol +12 -0
  407. package/contracts/type/String.sol +53 -0
  408. package/contracts/type/Timestamp.sol +6 -2
  409. package/contracts/type/UFixed.sol +6 -0
  410. package/contracts/type/Version.sol +3 -1
  411. package/package.json +8 -5
  412. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  413. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  414. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  415. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  416. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  417. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
  418. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  419. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  420. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  421. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -322
  422. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  423. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1151
  424. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  425. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  426. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  427. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  428. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  429. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  430. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
  431. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
  432. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
  433. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
  434. package/contracts/instance/InstanceAccessManager.sol +0 -543
  435. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
  436. package/contracts/registry/RegistryAccessManager.sol +0 -196
  437. package/contracts/registry/ReleaseManager.sol +0 -563
  438. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  439. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  440. package/contracts/staking/IStakingManager.sol +0 -15
  441. package/contracts/staking/IStakingStore.sol +0 -130
@@ -2,44 +2,43 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
+ import {Blocknumber} from "../type/Blocknumber.sol";
5
6
  import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
6
7
  import {IComponent} from "../shared/IComponent.sol";
8
+ import {InitializableCustom} from "../shared/InitializableCustom.sol";
7
9
  import {IRegistry} from "../registry/IRegistry.sol";
8
10
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
9
11
  import {IStaking} from "../staking/IStaking.sol";
10
12
  import {IVersionable} from "../shared/IVersionable.sol";
11
13
  import {NftId} from "../type/NftId.sol";
12
- import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
13
14
  import {ObjectType, STAKE, TARGET} from "../type/ObjectType.sol";
14
15
  import {Seconds} from "../type/Seconds.sol";
15
16
  import {StakingStore} from "./StakingStore.sol";
16
17
  import {Timestamp} from "../type/Timestamp.sol";
17
- import {UFixed} from "../type/UFixed.sol";
18
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
18
19
 
19
20
  contract StakingReader is
20
- IRegistryLinked
21
+ IRegistryLinked,
22
+ InitializableCustom
21
23
  {
22
24
 
23
25
  error ErrorStakingReaderDependenciesAlreadySet();
24
- error ErrorStakingReaderStakingStoreAlreadySet(address stakingStore);
25
26
 
26
27
  IRegistry private _registry;
27
28
  IStaking private _staking;
28
29
  StakingStore private _store;
29
30
 
31
+ constructor(IRegistry registry) InitializableCustom() {
32
+ _registry = registry;
33
+ }
30
34
 
31
- function setStakingDependencies(
32
- address registryAddress,
35
+ function initialize(
33
36
  address stakingAddress,
34
37
  address stakingStoreAddress
35
38
  )
36
39
  external
40
+ initializer
37
41
  {
38
- if (address(_staking) != address(0)) {
39
- revert ErrorStakingReaderDependenciesAlreadySet();
40
- }
41
-
42
- _registry = IRegistry(registryAddress);
43
42
  _staking = IStaking(stakingAddress);
44
43
  _store = StakingStore(stakingStoreAddress);
45
44
  }
@@ -54,34 +53,43 @@ contract StakingReader is
54
53
  return _staking;
55
54
  }
56
55
 
56
+ function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
57
+ return _store.getStakingRate(chainId, token);
58
+ }
59
+
57
60
 
58
61
  function isTarget(NftId targetNftId) external view returns (bool) {
59
- return _store.getTargetManager().exists(targetNftId);
62
+ return _store.getTargetNftIdSet().exists(targetNftId);
60
63
  }
61
64
 
62
65
 
63
66
  function targets() external view returns (uint256) {
64
- return _store.getTargetManager().nftIds();
67
+ return _store.getTargetNftIdSet().nftIds();
65
68
  }
66
69
 
67
70
 
68
71
  function getTargetNftId(uint256 idx) external view returns (NftId) {
69
- return _store.getTargetManager().getNftId(idx);
72
+ return _store.getTargetNftIdSet().getNftId(idx);
70
73
  }
71
74
 
72
75
 
73
76
  function isActive(NftId targetNftId) external view returns (bool) {
74
- return _store.getTargetManager().isActive(targetNftId);
77
+ return _store.getTargetNftIdSet().isActive(targetNftId);
75
78
  }
76
79
 
77
80
 
78
81
  function activeTargets() external view returns (uint256) {
79
- return _store.getTargetManager().activeNftIds();
82
+ return _store.getTargetNftIdSet().activeNftIds();
80
83
  }
81
84
 
82
85
 
83
86
  function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
84
- return _store.getTargetManager().getActiveNftId(idx);
87
+ return _store.getTargetNftIdSet().getActiveNftId(idx);
88
+ }
89
+
90
+
91
+ function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
92
+ return _registry.getObjectInfo(stakeNftId).parentNftId;
85
93
  }
86
94
 
87
95
 
@@ -101,47 +109,78 @@ contract StakingReader is
101
109
  }
102
110
 
103
111
 
112
+ /// @dev get the reward rate that applies to the specified stake nft id.
113
+ function getTargetRewardRate(NftId stakeNftId) external view returns (NftId targetNftId, UFixed rewardRate) {
114
+ targetNftId = getTargetNftId(stakeNftId);
115
+ rewardRate = getTargetInfo(targetNftId).rewardRate;
116
+ }
117
+
118
+
119
+ /// @dev get the reward rate for the specified target nft id.
120
+ function getRewardRate(NftId targetNftId) external view returns (UFixed rewardRate) {
121
+ return getTargetInfo(targetNftId).rewardRate;
122
+ }
123
+
124
+ /// @dev returns the current reward reserve balance for the specified target.
125
+ function getReserveBalance(NftId targetNftId) external view returns (Amount rewardReserveBalance) {
126
+ return _store.getReserveBalance(targetNftId);
127
+ }
128
+
104
129
  function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) {
105
130
  return _store.getStakeBalance(nftId);
106
131
  }
107
132
 
108
-
109
133
  function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) {
110
134
  return _store.getRewardBalance(nftId);
111
135
  }
112
136
 
113
-
114
137
  function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) {
115
138
  return _store.getBalanceUpdatedAt(nftId);
116
139
  }
117
140
 
141
+ function getBalanceUpdatedIn(NftId nftId) external view returns (Blocknumber blocknumber) {
142
+ return _store.getBalanceUpdatedIn(nftId);
143
+ }
144
+
145
+ function getTotalValueLocked(NftId nftId, address token) external view returns (Amount totalValueLocked) {
146
+ return _store.getTotalValueLocked(nftId, token);
147
+ }
118
148
 
119
- function getRewardCalculationInput(NftId stakeNftId)
149
+ function getRequiredStakeBalance(NftId nftId) external view returns (Amount requiredStakedAmount) {
150
+ return _store.getRequiredStakeBalance(nftId);
151
+ }
152
+
153
+ function getTargetBalances(NftId stakeNftId)
154
+ public
155
+ view
156
+ returns (
157
+ Amount balanceAmount,
158
+ Amount stakeAmount,
159
+ Amount rewardAmount,
160
+ Blocknumber lastUpdatedIn
161
+ )
162
+ {
163
+ (
164
+ balanceAmount,
165
+ stakeAmount,
166
+ rewardAmount,
167
+ lastUpdatedIn
168
+ ) = _store.getTargetBalances(stakeNftId);
169
+ }
170
+
171
+ function getStakeBalances(NftId stakeNftId)
120
172
  external
121
173
  view
122
174
  returns (
123
- UFixed rewardRate,
124
175
  Amount stakeAmount,
176
+ Amount rewardAmount,
125
177
  Timestamp lastUpdatedAt
126
178
  )
127
179
  {
128
- NftId targetNftId = _registry.getObjectInfo(stakeNftId).parentNftId;
129
- rewardRate = getTargetInfo(targetNftId).rewardRate;
130
-
131
180
  (
132
181
  stakeAmount,
182
+ rewardAmount,
133
183
  lastUpdatedAt
134
- ) = _store.getBalanceAndLastUpdatedAt(stakeNftId);
184
+ ) = _store.getStakeBalances(stakeNftId);
135
185
  }
136
-
137
- // function getTvlAmount(NftId targetNftId, address token) external view returns (Amount tvlAmount);
138
- // function getStakedAmount(NftId targetNftId) external view returns (Amount stakeAmount);
139
-
140
- // function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate);
141
-
142
- // function calculateRewardIncrementAmount(
143
- // NftId targetNftId,
144
- // Timestamp rewardsLastUpdatedAt
145
- // ) external view returns (Amount rewardIncrementAmount);
146
-
147
186
  }
@@ -45,29 +45,6 @@ contract StakingService is
45
45
  _;
46
46
  }
47
47
 
48
- function getDomain() public pure override returns(ObjectType) {
49
- return STAKING();
50
- }
51
-
52
-
53
- function registerProtocolTarget()
54
- external
55
- virtual
56
- {
57
- uint256 protocolId = ChainNft(
58
- getRegistry().getChainNftAddress()).PROTOCOL_NFT_ID();
59
-
60
- NftId protocolNftId = NftIdLib.toNftId(protocolId);
61
- _getStakingServiceStorage()._staking.registerTarget(
62
- protocolNftId,
63
- PROTOCOL(),
64
- 1, // protocol is registered on mainnet
65
- TargetManagerLib.getDefaultLockingPeriod(),
66
- TargetManagerLib.getDefaultRewardRate());
67
-
68
- emit LogStakingServiceProtocolTargetRegistered(protocolNftId);
69
- }
70
-
71
48
 
72
49
  function createInstanceTarget(
73
50
  NftId targetNftId,
@@ -76,7 +53,7 @@ contract StakingService is
76
53
  )
77
54
  external
78
55
  virtual
79
- // restricted // TODO re-enable once services have stable roles
56
+ restricted()
80
57
  {
81
58
  uint256 chainId = block.chainid;
82
59
  _getStakingServiceStorage()._staking.registerTarget(
@@ -89,23 +66,67 @@ contract StakingService is
89
66
  emit LogStakingServiceInstanceTargetRegistered(targetNftId, chainId);
90
67
  }
91
68
 
92
- function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod)
69
+
70
+ function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod)
93
71
  external
94
72
  virtual
95
- onlyNftOwner(targetNftId)
73
+ restricted()
96
74
  {
97
75
  _getStakingServiceStorage()._staking.setLockingPeriod(
98
- targetNftId, lockingPeriod);
76
+ instanceNftId,
77
+ lockingPeriod);
99
78
  }
100
79
 
101
- function setRewardRate(NftId targetNftId, UFixed rewardRate)
80
+
81
+ function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate)
102
82
  external
103
83
  virtual
104
- onlyNftOwner(targetNftId)
84
+ restricted()
105
85
  {
106
86
  _getStakingServiceStorage()._staking.setRewardRate(
107
- targetNftId, rewardRate);
87
+ instanceNftId,
88
+ rewardRate);
89
+ }
90
+
91
+
92
+ function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount)
93
+ external
94
+ virtual
95
+ restricted()
96
+ returns (Amount newBalance)
97
+ {
98
+ return _refillRewardReserves(instanceNftId, rewardProvider, dipAmount);
99
+ }
100
+
101
+
102
+ function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount)
103
+ external
104
+ virtual
105
+ restricted()
106
+ returns (Amount newBalance)
107
+ {
108
+ address rewardProvider = msg.sender;
109
+ return _refillRewardReserves(targetNftId, rewardProvider, dipAmount);
110
+ }
108
111
 
112
+
113
+ function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount)
114
+ external
115
+ virtual
116
+ restricted()
117
+ returns (Amount newBalance)
118
+ {
119
+ // update reward reserve book keeping
120
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
121
+ newBalance = $._staking.withdrawRewardReserves(instanceNftId, dipAmount);
122
+
123
+ // transfer withdrawal amount to target owner
124
+ address instanceOwner = getRegistry().ownerOf(instanceNftId);
125
+ $._staking.transferDipAmount(
126
+ instanceOwner,
127
+ dipAmount);
128
+
129
+ emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
109
130
  }
110
131
 
111
132
 
@@ -121,19 +142,15 @@ contract StakingService is
121
142
  )
122
143
  external
123
144
  virtual
124
- // restricted // TODO re-enable once services have stable roles
145
+ restricted()
125
146
  returns (
126
147
  NftId stakeNftId
127
148
  )
128
149
  {
129
150
  StakingServiceStorage storage $ = _getStakingServiceStorage();
130
- StakingReader stakingReader = $._staking.getStakingReader();
131
151
  address stakeOwner = msg.sender;
132
152
 
133
- StakeManagerLib.checkActiveTarget(
134
- stakingReader,
135
- targetNftId);
136
-
153
+ // target nft id checks are performed in $._staking.createStake() below
137
154
  // register new stake object with registry
138
155
  stakeNftId = $._registryService.registerStake(
139
156
  IRegistry.ObjectInfo({
@@ -147,7 +164,7 @@ contract StakingService is
147
164
  }));
148
165
 
149
166
  // create stake info with staking
150
- $._staking.registerStake(
167
+ $._staking.createStake(
151
168
  stakeNftId,
152
169
  targetNftId,
153
170
  dipAmount);
@@ -167,38 +184,25 @@ contract StakingService is
167
184
  )
168
185
  external
169
186
  virtual
170
- // restricted // TODO re-enable once services have stable roles
187
+ restricted()
171
188
  onlyNftOwner(stakeNftId)
172
189
  {
173
190
  StakingServiceStorage storage $ = _getStakingServiceStorage();
174
- StakingReader stakingReader = $._staking.getStakingReader();
175
191
  address stakeOwner = msg.sender;
176
192
 
177
- // add additional staked dips by staking
178
- $._staking.stake(
193
+ // add additional staked dips by staking
194
+ Amount stakeBalance = $._staking.stake(
179
195
  stakeNftId,
180
196
  dipAmount);
181
197
 
182
198
  // collect staked dip by staking
183
- $._staking.collectDipAmount(
184
- stakeOwner,
185
- dipAmount);
186
-
187
- emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount);
188
- }
189
-
199
+ if (dipAmount.gtz()) {
200
+ $._staking.collectDipAmount(
201
+ stakeOwner,
202
+ dipAmount);
203
+ }
190
204
 
191
- function restake(
192
- NftId stakeNftId
193
- )
194
- external
195
- virtual
196
- // restricted // TODO re-enable once services have stable roles
197
- onlyNftOwner(stakeNftId)
198
- {
199
- // restake all rewards as additional stakes
200
- StakingServiceStorage storage $ = _getStakingServiceStorage();
201
- $._staking.restake(stakeNftId);
205
+ emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
202
206
  }
203
207
 
204
208
 
@@ -208,33 +212,23 @@ contract StakingService is
208
212
  )
209
213
  external
210
214
  virtual
211
- // restricted // TODO re-enable once services have stable roles
215
+ restricted()
212
216
  onlyNftOwner(stakeNftId)
213
217
  returns (
214
218
  NftId newStakeNftId
215
219
  )
216
220
  {
221
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
217
222
  // TODO implement
218
223
  }
219
224
 
220
225
 
221
- function unstake(
222
- NftId stakeNftId,
223
- Amount amount
224
- )
225
- external
226
- virtual
227
- {
228
-
229
- }
230
-
231
-
232
226
  function updateRewards(
233
227
  NftId stakeNftId
234
228
  )
235
229
  external
236
- // unpermissioned, anybody may call this function
237
- // TODO consider to add restricted (just to be able to disable function when target is disabled)
230
+ virtual
231
+ restricted()
238
232
  {
239
233
  StakingServiceStorage storage $ = _getStakingServiceStorage();
240
234
  $._staking.updateRewards(stakeNftId);
@@ -243,30 +237,44 @@ contract StakingService is
243
237
  }
244
238
 
245
239
 
246
-
247
- function increaseTotalValueLocked(
248
- NftId targetNftId,
249
- address token,
250
- Amount amount
251
- )
240
+ function claimRewards(NftId stakeNftId)
252
241
  external
253
242
  virtual
254
- returns (Amount totalValueLocked)
243
+ restricted()
244
+ onlyNftOwner(stakeNftId)
255
245
  {
246
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
247
+ address stakeOwner = msg.sender;
248
+
249
+ Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
250
+ $._staking.transferDipAmount(
251
+ stakeOwner,
252
+ rewardsClaimedAmount);
256
253
 
254
+ emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
257
255
  }
258
256
 
259
257
 
260
- function decreaseTotalValueLocked(
261
- NftId targetNftId,
262
- address token,
263
- Amount amount
264
- )
258
+ function unstake(NftId stakeNftId)
265
259
  external
266
260
  virtual
267
- returns (Amount totalValueLocked)
261
+ restricted()
262
+ onlyNftOwner(stakeNftId)
268
263
  {
264
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
265
+ address stakeOwner = msg.sender;
266
+
267
+ (
268
+ Amount unstakedAmount,
269
+ Amount rewardsClaimedAmount
270
+ ) = $._staking.unstake(stakeNftId);
269
271
 
272
+ Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
273
+ $._staking.transferDipAmount(
274
+ stakeOwner,
275
+ totalAmount);
276
+
277
+ emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
270
278
  }
271
279
 
272
280
 
@@ -277,10 +285,13 @@ contract StakingService is
277
285
  )
278
286
  external
279
287
  virtual
288
+ restricted()
280
289
  {
290
+ // TODO implement
281
291
 
282
292
  }
283
293
 
294
+ //--- view functions ----------------------------------------------------//
284
295
 
285
296
  function getDipToken()
286
297
  external
@@ -308,6 +319,7 @@ contract StakingService is
308
319
  return _getStakingServiceStorage()._staking;
309
320
  }
310
321
 
322
+ //--- internal functions ------------------------------------------------//
311
323
 
312
324
  function _initialize(
313
325
  address owner,
@@ -318,11 +330,12 @@ contract StakingService is
318
330
  initializer()
319
331
  {
320
332
  (
333
+ address authority,
321
334
  address registryAddress,
322
335
  address stakingAddress
323
- ) = abi.decode(data, (address, address));
336
+ ) = abi.decode(data, (address, address, address));
324
337
 
325
- initializeService(registryAddress, address(0), owner);
338
+ initializeService(registryAddress, authority, owner);
326
339
 
327
340
  StakingServiceStorage storage $ = _getStakingServiceStorage();
328
341
  $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
@@ -367,9 +380,32 @@ contract StakingService is
367
380
  }
368
381
 
369
382
 
383
+ function _refillRewardReserves(NftId targetNftId, address rewardProvider, Amount dipAmount)
384
+ internal
385
+ virtual
386
+ returns (Amount newBalance)
387
+ {
388
+ // update reward reserve book keeping
389
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
390
+ newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
391
+
392
+ // collect reward dip from provider
393
+ $._staking.collectDipAmount(
394
+ rewardProvider,
395
+ dipAmount);
396
+
397
+ emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
398
+ }
399
+
400
+
370
401
  function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
371
402
  assembly {
372
403
  $.slot := STAKING_SERVICE_LOCATION_V1
373
404
  }
374
405
  }
406
+
407
+
408
+ function _getDomain() internal pure override returns(ObjectType) {
409
+ return STAKING();
410
+ }
375
411
  }
@@ -14,6 +14,7 @@ contract StakingServiceManager is
14
14
 
15
15
  /// @dev initializes proxy manager with service implementation
16
16
  constructor(
17
+ address authority,
17
18
  address registryAddress,
18
19
  bytes32 salt
19
20
  )
@@ -21,16 +22,15 @@ contract StakingServiceManager is
21
22
  {
22
23
  StakingService svc = new StakingService();
23
24
  bytes memory data = abi.encode(
25
+ authority,
24
26
  registryAddress,
25
27
  IRegistry(registryAddress).getStakingAddress());
26
-
27
28
  IVersionable versionable = deployDetermenistic(
28
29
  address(svc),
29
30
  data,
30
31
  salt);
31
32
 
32
33
  _stakingService = StakingService(address(versionable));
33
- _stakingService.registerProtocolTarget();
34
34
  }
35
35
 
36
36
  //--- view functions ----------------------------------------------------//