@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
@@ -9,10 +9,7 @@ import {IRegistryService} from "../registry/IRegistryService.sol";
9
9
  import {IStaking} from "./IStaking.sol";
10
10
  import {IVersionable} from "../shared/IVersionable.sol";
11
11
  import {Key32} from "../type/Key32.sol";
12
- import {KEEP_STATE} from "../type/StateId.sol";
13
- import {LibNftIdSet} from "../type/NftIdSet.sol";
14
12
  import {NftId, NftIdLib} from "../type/NftId.sol";
15
- import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
16
13
  import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
17
14
  import {Seconds, SecondsLib} from "../type/Seconds.sol";
18
15
  import {StakeManagerLib} from "./StakeManagerLib.sol";
@@ -42,12 +39,6 @@ contract Staking is
42
39
  TokenRegistry _tokenRegistry;
43
40
  StakingStore _store;
44
41
  StakingReader _reader;
45
-
46
- mapping(uint256 chainId => mapping(address token => UFixed stakingRate)) _stakingRate;
47
-
48
- mapping(NftId targetNftId => Amount stakedAmount) _stakedAmount;
49
- mapping(NftId targetNftId => mapping(address token => Amount tvlAmount)) _tvlAmount;
50
-
51
42
  NftId _protocolNftId;
52
43
  }
53
44
 
@@ -61,28 +52,17 @@ contract Staking is
61
52
 
62
53
 
63
54
  modifier onlyTarget(NftId targetNftId) {
64
- if (!_getStakingStorage()._store.getTargetManager().exists(targetNftId)) {
55
+ if (!_getStakingStorage()._store.getTargetNftIdSet().exists(targetNftId)) {
65
56
  revert ErrorStakingNotTarget(targetNftId);
66
57
  }
67
58
  _;
68
59
  }
69
60
 
70
-
71
- // from Versionable
72
- function getVersion()
73
- public
74
- pure
75
- virtual override (IVersionable, Versionable)
76
- returns(Version)
77
- {
78
- return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
79
- }
80
-
81
61
  // set/update staking reader
82
62
  function setStakingReader(StakingReader stakingReader)
83
63
  external
84
64
  virtual
85
- onlyOwner
65
+ onlyOwner()
86
66
  {
87
67
  if(stakingReader.getStaking() != IStaking(this)) {
88
68
  revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
@@ -96,12 +76,19 @@ contract Staking is
96
76
  function setStakingRate(uint256 chainId, address token, UFixed stakingRate)
97
77
  external
98
78
  virtual
99
- onlyOwner
79
+ onlyOwner()
100
80
  {
81
+ StakingStorage storage $ = _getStakingStorage();
82
+
83
+ if (!$._tokenRegistry.isRegistered(chainId, token)) {
84
+ revert ErrorStakingTokenNotRegistered(chainId, token);
85
+ }
101
86
 
102
- }
87
+ UFixed oldStakingRate = $._store.getStakingRate(chainId, token);
88
+ $._store.setStakingRate(chainId, token, stakingRate);
103
89
 
104
- // reward management
90
+ emit LogStakingStakingRateSet(chainId, token, oldStakingRate, stakingRate);
91
+ }
105
92
 
106
93
  // target management
107
94
 
@@ -114,7 +101,7 @@ contract Staking is
114
101
  )
115
102
  external
116
103
  virtual
117
- // restricted // staking service access
104
+ restricted()
118
105
  {
119
106
  TargetManagerLib.checkTargetParameters(
120
107
  getRegistry(),
@@ -140,8 +127,8 @@ contract Staking is
140
127
  )
141
128
  external
142
129
  virtual
143
- // TODO add restricted // only staking service
144
- onlyTarget(targetNftId) // maybe duplicate check
130
+ restricted()
131
+ onlyTarget(targetNftId)
145
132
  {
146
133
  (
147
134
  Seconds oldLockingPeriod,
@@ -162,7 +149,8 @@ contract Staking is
162
149
  function setRewardRate(NftId targetNftId, UFixed rewardRate)
163
150
  external
164
151
  virtual
165
- onlyTarget(targetNftId) // maybe duplicate check
152
+ restricted()
153
+ onlyTarget(targetNftId)
166
154
  {
167
155
  (
168
156
  UFixed oldRewardRate,
@@ -181,39 +169,57 @@ contract Staking is
181
169
  function refillRewardReserves(NftId targetNftId, Amount dipAmount)
182
170
  external
183
171
  virtual
172
+ restricted()
173
+ returns (Amount newBalance)
184
174
  {
185
-
175
+ // update book keeping of reward reserves
176
+ StakingStorage storage $ = _getStakingStorage();
177
+ newBalance = $._store.increaseReserves(targetNftId, dipAmount);
186
178
  }
187
179
 
180
+
188
181
  function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
189
182
  external
190
183
  virtual
191
- // onlyNftOwner(targetNftId)
184
+ restricted()
185
+ returns (Amount newBalance)
192
186
  {
193
-
187
+ // update book keeping of reward reserves
188
+ StakingStorage storage $ = _getStakingStorage();
189
+ newBalance = $._store.decreaseReserves(targetNftId, dipAmount);
194
190
  }
195
191
 
196
192
 
197
- function increaseTvl(NftId targetNftId, address token, Amount amount)
193
+ function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
198
194
  external
199
195
  virtual
200
- // restricted // service to service access
196
+ restricted() // only pool service
197
+ returns (Amount newBalance)
201
198
  {
202
-
199
+ StakingStorage storage $ = _getStakingStorage();
200
+ uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
201
+ UFixed stakingRate = $._reader.getStakingRate(chainId, token);
202
+ newBalance = $._store.increaseTotalValueLocked(targetNftId, stakingRate, token, amount);
203
203
  }
204
204
 
205
- function decreaseTvl(NftId targetNftId, address token, Amount amount)
205
+
206
+ function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount)
206
207
  external
207
208
  virtual
208
- // restricted // service to service access
209
+ restricted() // only pool service
210
+ returns (Amount newBalance)
209
211
  {
210
-
212
+ StakingStorage storage $ = _getStakingStorage();
213
+ uint chainId = $._reader.getTargetInfo(targetNftId).chainId;
214
+ UFixed stakingRate = $._reader.getStakingRate(chainId, token);
215
+ newBalance = $._store.decreaseTotalValueLocked(targetNftId, stakingRate, token, amount);
211
216
  }
212
217
 
213
218
 
214
219
  function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
215
220
  external
216
221
  virtual
222
+ restricted()
217
223
  onlyOwner // or CCIP
218
224
  {
219
225
 
@@ -222,6 +228,7 @@ contract Staking is
222
228
  function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
223
229
  external
224
230
  virtual
231
+ restricted()
225
232
  onlyOwner // or CCIP
226
233
  {
227
234
 
@@ -229,68 +236,76 @@ contract Staking is
229
236
 
230
237
  //--- staking functions -------------------------------------------------//
231
238
 
232
- function registerStake(
239
+ function createStake(
233
240
  NftId stakeNftId,
234
241
  NftId targetNftId,
235
- Amount dipAmount
242
+ Amount stakeAmount
236
243
  )
237
244
  external
238
245
  virtual
239
- // TODO add restricted() // only staking service
246
+ restricted() // only staking service
240
247
  {
241
- Timestamp lockedUntil = StakeManagerLib.checkStakeParameters(
242
- _getStakingStorage()._reader,
248
+ StakingStorage storage $ = _getStakingStorage();
249
+ Timestamp lockedUntil = StakeManagerLib.checkCreateParameters(
250
+ $._reader,
243
251
  targetNftId,
244
- dipAmount);
252
+ stakeAmount);
245
253
 
246
- _getStakingStorage()._store.create(
254
+ // create new stake
255
+ $._store.create(
247
256
  stakeNftId,
248
257
  StakeInfo({
249
- lockedUntil: lockedUntil}),
250
- dipAmount);
258
+ lockedUntil: lockedUntil}));
259
+
260
+ // update target stake balance
261
+ $._store.increaseStake(
262
+ stakeNftId,
263
+ targetNftId,
264
+ stakeAmount);
251
265
  }
252
266
 
253
267
 
254
- function stake(NftId stakeNftId, Amount dipAmount)
268
+ function stake(
269
+ NftId stakeNftId,
270
+ Amount stakeAmount
271
+ )
255
272
  external
256
273
  virtual
257
- // TODO add restricted() // only staking service
274
+ restricted() // only staking service
258
275
  onlyStake(stakeNftId)
276
+ returns (Amount stakeBalance)
259
277
  {
260
278
  StakingStorage storage $ = _getStakingStorage();
261
- Amount rewardIncrement = StakeManagerLib.calculateRewardIncrease(
262
- $._reader,
263
- stakeNftId);
264
-
265
- $._store.increaseBalance(
266
- stakeNftId,
267
- dipAmount,
268
- rewardIncrement);
279
+ stakeBalance = StakeManagerLib.stake(
280
+ getRegistry(),
281
+ $._reader,
282
+ $._store,
283
+ stakeNftId,
284
+ stakeAmount);
269
285
  }
270
286
 
271
287
 
272
- function restake(NftId stakeNftId)
288
+ function restake(
289
+ NftId stakeNftId,
290
+ NftId newTargetNftId
291
+ )
273
292
  external
274
293
  virtual
275
- // TODO add restricted() // only staking service
294
+ restricted() // only staking service
276
295
  onlyStake(stakeNftId)
296
+ returns (NftId newStakeNftId)
277
297
  {
278
- // TODO add check that target is active and allows additional staking amount
298
+ // TODO add check that allows additional staking amount
279
299
  StakingStorage storage $ = _getStakingStorage();
280
- Amount rewardIncrement = StakeManagerLib.calculateRewardIncrease(
281
- $._reader,
282
- stakeNftId);
283
300
 
284
- $._store.restakeRewards(
285
- stakeNftId,
286
- rewardIncrement);
287
- }
301
+ // TODO implement
302
+ }
288
303
 
289
304
 
290
305
  function updateRewards(NftId stakeNftId)
291
306
  external
292
307
  virtual
293
- // TODO add restricted() // only staking service
308
+ restricted() // only staking service
294
309
  onlyStake(stakeNftId)
295
310
  {
296
311
  StakingStorage storage $ = _getStakingStorage();
@@ -301,7 +316,7 @@ contract Staking is
301
316
  function claimRewards(NftId stakeNftId)
302
317
  external
303
318
  virtual
304
- // TODO add restricted() // only staking service
319
+ restricted() // only staking service
305
320
  onlyStake(stakeNftId)
306
321
  returns (
307
322
  Amount rewardsClaimedAmount
@@ -310,19 +325,23 @@ contract Staking is
310
325
  StakingStorage storage $ = _getStakingStorage();
311
326
 
312
327
  // update rewards since last update
313
- _updateRewards($._reader, $._store, stakeNftId);
328
+ NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
314
329
 
315
330
  // unstake all available rewards
316
331
  rewardsClaimedAmount = $._store.claimUpTo(
317
332
  stakeNftId,
333
+ targetNftId,
318
334
  AmountLib.max());
335
+
336
+ // update reward reserves
337
+ $._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
319
338
  }
320
339
 
321
340
 
322
341
  function unstake(NftId stakeNftId)
323
342
  external
324
343
  virtual
325
- // TODO add restricted() // only staking service
344
+ restricted() // only staking service
326
345
  onlyStake(stakeNftId)
327
346
  returns (
328
347
  Amount unstakedAmount,
@@ -333,7 +352,7 @@ contract Staking is
333
352
  StakingStorage storage $ = _getStakingStorage();
334
353
 
335
354
  // update rewards since last update
336
- _updateRewards($._reader, $._store, stakeNftId);
355
+ NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
337
356
 
338
357
  // unstake all available dips
339
358
  (
@@ -341,35 +360,21 @@ contract Staking is
341
360
  rewardsClaimedAmount
342
361
  ) = $._store.unstakeUpTo(
343
362
  stakeNftId,
363
+ targetNftId,
344
364
  AmountLib.max(), // unstake all stakes
345
365
  AmountLib.max()); // claim all rewards
346
- }
347
-
348
-
349
-
350
- function _updateRewards(
351
- StakingReader reader,
352
- StakingStore store,
353
- NftId stakeNftId
354
- )
355
- internal
356
- virtual
357
- {
358
- Amount rewardIncrement = StakeManagerLib.calculateRewardIncrease(
359
- reader,
360
- stakeNftId);
361
366
 
362
- store.updateRewards(
363
- stakeNftId,
364
- rewardIncrement);
367
+ // update reward reserves
368
+ $._store.decreaseReserves(targetNftId, rewardsClaimedAmount);
365
369
  }
366
370
 
367
371
 
372
+
368
373
  //--- other functions ---------------------------------------------------//
369
374
 
370
375
  function collectDipAmount(address from, Amount dipAmount)
371
376
  external
372
- // TODO add restricted() // only staking service
377
+ restricted() // only staking service
373
378
  {
374
379
  TokenHandler tokenHandler = getTokenHandler();
375
380
  address stakingWallet = getWallet();
@@ -386,7 +391,7 @@ contract Staking is
386
391
 
387
392
  function transferDipAmount(address to, Amount dipAmount)
388
393
  external
389
- // TODO add restricted() // only staking service
394
+ restricted() // only staking service
390
395
  {
391
396
  TokenHandler tokenHandler = getTokenHandler();
392
397
  address stakingWallet = getWallet();
@@ -411,35 +416,46 @@ contract Staking is
411
416
  return _getStakingStorage()._store;
412
417
  }
413
418
 
414
- function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
415
- return _getStakingStorage()._stakingRate[chainId][token];
419
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
420
+ return address(_getStakingStorage()._tokenRegistry);
416
421
  }
417
422
 
418
- function getTvlAmount(NftId targetNftId, address token) external view returns (Amount tvlAmount) {
419
- return _getStakingStorage()._tvlAmount[targetNftId][token];
420
- }
421
423
 
422
- function getStakedAmount(NftId targetNftId) external view returns (Amount stakeAmount) {
423
- return _getStakingStorage()._stakedAmount[targetNftId];
424
+ // from Versionable
425
+ function getVersion()
426
+ public
427
+ pure
428
+ virtual override (IVersionable, Versionable)
429
+ returns(Version)
430
+ {
431
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
424
432
  }
425
433
 
426
- function getTokenRegistryAddress() external view returns (address tokenRegistry) {
427
- return address(_getStakingStorage()._tokenRegistry);
428
- }
434
+ //--- internal functions ------------------------------------------------//
429
435
 
430
- function calculateRewardIncrementAmount(
431
- NftId targetNftId,
432
- Timestamp rewardsLastUpdatedAt
436
+ function _updateRewards(
437
+ StakingReader reader,
438
+ StakingStore store,
439
+ NftId stakeNftId
433
440
  )
434
- public
441
+ internal
435
442
  virtual
436
- view
437
- returns (Amount rewardIncrementAmount)
443
+ returns (NftId targetNftId)
438
444
  {
445
+ UFixed rewardRate;
446
+
447
+ (targetNftId, rewardRate) = reader.getTargetRewardRate(stakeNftId);
448
+ (Amount rewardIncrement, ) = StakeManagerLib.calculateRewardIncrease(
449
+ reader,
450
+ stakeNftId,
451
+ rewardRate);
439
452
 
453
+ store.updateRewards(
454
+ stakeNftId,
455
+ targetNftId,
456
+ rewardIncrement);
440
457
  }
441
458
 
442
- //--- internal functions ------------------------------------------------//
443
459
 
444
460
  function _initialize(
445
461
  address owner,
@@ -450,26 +466,27 @@ contract Staking is
450
466
  initializer
451
467
  {
452
468
  (
453
- address initialAuthority,
454
469
  address registryAddress,
455
- address stakingReaderAddress,
470
+ address tokenRegistryAddress,
456
471
  address stakingStoreAddress,
457
- address initialOwner
458
- ) = abi.decode(data, (address, address, address, address, address));
472
+ address stakingOwner
473
+ ) = abi.decode(data, (address, address, address, address));
459
474
 
475
+ // only admin(authority) and dip token address are set in registry at this point
460
476
  IRegistry registry = IRegistry(registryAddress);
461
- TokenRegistry tokenRegistry = TokenRegistry(registry.getTokenRegistryAddress());
462
- address dipTokenAddress = address(tokenRegistry.getDipToken());
477
+ address authority = registry.getAuthority();
478
+ TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
479
+ address dipTokenAddress = tokenRegistry.getDipTokenAddress();
463
480
 
464
481
  initializeComponent(
465
- initialAuthority,
482
+ authority,
466
483
  registryAddress,
467
484
  registry.getNftId(),
468
485
  CONTRACT_NAME,
469
486
  dipTokenAddress,
470
487
  STAKING(),
471
488
  false, // is interceptor
472
- initialOwner,
489
+ stakingOwner,
473
490
  "", // registry data
474
491
  ""); // component data
475
492
 
@@ -479,15 +496,8 @@ contract Staking is
479
496
  StakingStorage storage $ = _getStakingStorage();
480
497
  $._protocolNftId = getRegistry().getProtocolNftId();
481
498
  $._store = StakingStore(stakingStoreAddress);
482
- $._reader = StakingReader(stakingReaderAddress);
483
- $._tokenRegistry = TokenRegistry(
484
- address(tokenRegistry));
485
-
486
- // wiring to staking
487
- $._reader.setStakingDependencies(
488
- registryAddress,
489
- address(this),
490
- stakingStoreAddress);
499
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
500
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
491
501
 
492
502
  registerInterface(type(IStaking).interfaceId);
493
503
  }
@@ -498,5 +508,4 @@ contract Staking is
498
508
  $.slot := STAKING_LOCATION_V1
499
509
  }
500
510
  }
501
-
502
511
  }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {TARGET, COMPONENT, STAKE} from "../type/ObjectType.sol";
5
+ import {INITIAL} from "../type/StateId.sol";
6
+ import {Lifecycle} from "../shared/Lifecycle.sol";
7
+
8
+ contract StakingLifecycle is
9
+ Lifecycle
10
+ {
11
+ constructor() {
12
+ _setupLifecycle();
13
+ }
14
+
15
+ function _setupLifecycle()
16
+ internal
17
+ override
18
+ {
19
+ setInitialState(TARGET(), INITIAL());
20
+ setInitialState(COMPONENT(), INITIAL());
21
+ setInitialState(STAKE(), INITIAL());
22
+ }
23
+ }
@@ -3,47 +3,35 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IVersionable} from "../shared/IVersionable.sol";
5
5
  import {ProxyManager} from "../shared/ProxyManager.sol";
6
- import {ReleaseManager} from "../registry/ReleaseManager.sol";
7
6
  import {Staking} from "./Staking.sol";
8
7
  import {StakingReader} from "./StakingReader.sol";
9
8
  import {StakingStore} from "./StakingStore.sol";
10
9
 
10
+ import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
11
+
11
12
  contract StakingManager is
12
13
  ProxyManager
13
14
  {
14
-
15
- error ErrorStakingManagerNotReleaseManager(address sender);
16
-
17
15
  Staking private _staking;
18
16
  address private _initialImplementation;
19
17
  bytes private _initializationData;
20
18
 
21
19
  /// @dev initializes proxy manager with service implementation
22
20
  constructor(
23
- address registryAddress,
24
- address stakingStoreAddress,
21
+ address registry,
22
+ address tokenRegistry,
23
+ address stakingStore,
25
24
  address initialOwner
26
25
  )
27
- ProxyManager(registryAddress)
26
+ ProxyManager(registry)
28
27
  {
29
- // TODO cleanup
30
- // ReleaseManager releaseManager = ReleaseManager(
31
- // getRegistry().getReleaseManagerAddress());
32
- // address authority = releaseManager.authority();
33
-
34
28
  Staking stakingImplementation = new Staking();
35
- // stakingStoreAddress
36
- // StakingStore stakingStore = new StakingStore(authority, registryAddress, address(stakingReader));
37
- StakingStore stakingStore = StakingStore(stakingStoreAddress);
38
- StakingReader stakingReader = stakingStore.getStakingReader();
39
- address authority = stakingStore.authority();
40
29
 
41
30
  _initialImplementation = address(stakingImplementation);
42
31
  _initializationData = abi.encode(
43
- authority,
44
- registryAddress,
45
- address(stakingReader),
46
- address(stakingStore),
32
+ registry,
33
+ tokenRegistry,
34
+ stakingStore,
47
35
  initialOwner);
48
36
 
49
37
  IVersionable versionable = deploy(
@@ -62,4 +50,4 @@ contract StakingManager is
62
50
  {
63
51
  return _staking;
64
52
  }
65
- }
53
+ }