@etherisc/gif-next 0.0.2-9dd41ff-671 → 0.0.2-9ed3c41-176

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 (476) hide show
  1. package/README.md +30 -2
  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/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  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 +148 -352
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -335
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +72 -97
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +151 -251
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +67 -64
  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 +71 -72
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +190 -49
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +81 -141
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1158 -278
  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 +493 -332
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +271 -109
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +65 -58
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1103 -359
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  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 +21 -0
  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 +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  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 +95 -268
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -73
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -51
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +149 -285
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +134 -133
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +191 -348
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +180 -368
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +47 -84
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +93 -167
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +61 -50
  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 +121 -211
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +75 -72
  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 +94 -25
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +40 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +253 -148
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -55
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +180 -297
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +58 -103
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +163 -174
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +86 -59
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  144. package/artifacts/contracts/product/Product.sol/Product.json +288 -248
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +47 -222
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +39 -48
  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 +106 -32
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +42 -73
  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 +359 -47
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1557 -116
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +198 -28
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +45 -42
  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 +314 -136
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Component.sol/Component.json +100 -96
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +892 -55
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  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 +76 -81
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +12 -16
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  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/IPolicyHolder.sol/IPolicyHolder.json +21 -3
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  201. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +33 -20
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
  216. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +19 -32
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +17 -22
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +16 -16
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +40 -4
  226. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  227. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  228. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +566 -54
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  235. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  236. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +657 -100
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +65 -46
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.json +34 -34
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +76 -2
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  287. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  289. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  301. package/contracts/authorization/AccessAdmin.sol +591 -0
  302. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  303. package/contracts/authorization/Authorization.sol +218 -0
  304. package/contracts/authorization/IAccess.sol +48 -0
  305. package/contracts/authorization/IAccessAdmin.sol +136 -0
  306. package/contracts/authorization/IAuthorization.sol +54 -0
  307. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  308. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  309. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  310. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  311. package/contracts/distribution/BasicDistribution.sol +149 -0
  312. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  313. package/contracts/distribution/Distribution.sol +144 -146
  314. package/contracts/distribution/DistributionService.sol +69 -118
  315. package/contracts/distribution/IDistributionComponent.sol +20 -43
  316. package/contracts/distribution/IDistributionService.sol +7 -9
  317. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  318. package/contracts/instance/IInstance.sol +21 -12
  319. package/contracts/instance/IInstanceService.sol +44 -25
  320. package/contracts/instance/Instance.sol +110 -86
  321. package/contracts/instance/InstanceAdmin.sol +194 -282
  322. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  323. package/contracts/instance/InstanceReader.sol +84 -47
  324. package/contracts/instance/InstanceService.sol +253 -108
  325. package/contracts/instance/InstanceStore.sol +131 -66
  326. package/contracts/instance/base/BalanceStore.sol +123 -0
  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 -0
  332. package/contracts/instance/module/IBundle.sol +1 -4
  333. package/contracts/instance/module/IComponents.sol +15 -4
  334. package/contracts/instance/module/IPolicy.sol +8 -2
  335. package/contracts/mock/Dip.sol +26 -0
  336. package/contracts/oracle/BasicOracle.sol +48 -0
  337. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  338. package/contracts/oracle/IOracle.sol +36 -0
  339. package/contracts/oracle/IOracleComponent.sol +32 -0
  340. package/contracts/oracle/IOracleService.sol +65 -0
  341. package/contracts/oracle/Oracle.sol +157 -0
  342. package/contracts/oracle/OracleService.sol +278 -0
  343. package/contracts/oracle/OracleServiceManager.sol +42 -0
  344. package/contracts/pool/BasicPool.sol +164 -0
  345. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  346. package/contracts/pool/BundleService.sol +86 -174
  347. package/contracts/pool/IBundleService.sol +4 -16
  348. package/contracts/pool/IPoolComponent.sol +4 -66
  349. package/contracts/pool/IPoolService.sol +45 -9
  350. package/contracts/pool/Pool.sol +150 -141
  351. package/contracts/pool/PoolService.sol +191 -144
  352. package/contracts/product/ApplicationService.sol +109 -42
  353. package/contracts/product/BasicProduct.sol +82 -0
  354. package/contracts/product/BasicProductAuthorization.sol +40 -0
  355. package/contracts/product/ClaimService.sol +18 -19
  356. package/contracts/product/IApplicationService.sol +1 -1
  357. package/contracts/product/IClaimService.sol +7 -1
  358. package/contracts/product/IPolicyService.sol +6 -8
  359. package/contracts/product/IPricingService.sol +3 -1
  360. package/contracts/product/IProductComponent.sol +9 -11
  361. package/contracts/product/IProductService.sol +1 -8
  362. package/contracts/product/PolicyService.sol +225 -128
  363. package/contracts/product/PricingService.sol +72 -48
  364. package/contracts/product/Product.sol +118 -105
  365. package/contracts/product/ProductService.sol +26 -114
  366. package/contracts/registry/ChainNft.sol +8 -1
  367. package/contracts/registry/IRegistry.sol +40 -18
  368. package/contracts/registry/IRegistryService.sol +15 -5
  369. package/contracts/registry/Registry.sol +221 -110
  370. package/contracts/registry/RegistryAdmin.sol +299 -77
  371. package/contracts/registry/RegistryService.sol +48 -14
  372. package/contracts/registry/RegistryServiceManager.sol +2 -9
  373. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  374. package/contracts/registry/ReleaseRegistry.sol +487 -0
  375. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  376. package/contracts/registry/TokenRegistry.sol +261 -64
  377. package/contracts/shared/Component.sol +139 -129
  378. package/contracts/shared/ComponentService.sol +527 -87
  379. package/contracts/shared/ComponentServiceManager.sol +35 -0
  380. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  381. package/contracts/shared/ERC165.sol +1 -1
  382. package/contracts/shared/IComponent.sol +17 -37
  383. package/contracts/shared/IComponentService.sol +102 -0
  384. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  385. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  386. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  387. package/contracts/shared/INftOwnable.sol +1 -1
  388. package/contracts/shared/IPolicyHolder.sol +6 -1
  389. package/contracts/shared/IService.sol +8 -1
  390. package/contracts/shared/InitializableCustom.sol +177 -0
  391. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  392. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
  393. package/contracts/shared/Lifecycle.sol +77 -0
  394. package/contracts/shared/NftIdSet.sol +65 -0
  395. package/contracts/shared/NftOwnable.sol +3 -13
  396. package/contracts/shared/PolicyHolder.sol +21 -13
  397. package/contracts/shared/ProxyManager.sol +2 -3
  398. package/contracts/shared/Registerable.sol +2 -2
  399. package/contracts/shared/Service.sol +32 -21
  400. package/contracts/shared/TokenHandler.sol +24 -1
  401. package/contracts/staking/IStaking.sol +167 -0
  402. package/contracts/staking/IStakingService.sol +105 -47
  403. package/contracts/staking/StakeManagerLib.sol +231 -0
  404. package/contracts/staking/Staking.sol +511 -0
  405. package/contracts/staking/StakingLifecycle.sol +23 -0
  406. package/contracts/staking/StakingManager.sol +53 -0
  407. package/contracts/staking/StakingReader.sol +186 -0
  408. package/contracts/staking/StakingService.sol +286 -44
  409. package/contracts/staking/StakingServiceManager.sol +7 -3
  410. package/contracts/staking/StakingStore.sol +615 -0
  411. package/contracts/staking/TargetManagerLib.sol +207 -0
  412. package/contracts/type/AddressSet.sol +1 -1
  413. package/contracts/type/Amount.sol +20 -1
  414. package/contracts/type/Blocknumber.sol +20 -3
  415. package/contracts/type/Fee.sol +17 -16
  416. package/contracts/type/NftId.sol +14 -16
  417. package/contracts/type/NftIdSet.sol +1 -1
  418. package/contracts/type/ObjectType.sol +172 -63
  419. package/contracts/type/Referral.sol +1 -1
  420. package/contracts/type/RequestId.sol +75 -0
  421. package/contracts/type/RiskId.sol +1 -1
  422. package/contracts/type/RoleId.sol +104 -69
  423. package/contracts/type/Seconds.sol +27 -0
  424. package/contracts/type/Selector.sol +102 -0
  425. package/contracts/type/StateId.sol +27 -2
  426. package/contracts/type/String.sol +53 -0
  427. package/contracts/type/Timestamp.sol +6 -2
  428. package/contracts/type/UFixed.sol +6 -0
  429. package/contracts/type/Version.sol +4 -2
  430. package/package.json +8 -5
  431. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  432. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  433. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  434. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -188
  435. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  436. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  437. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  438. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  439. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  440. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  441. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  442. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  443. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  444. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  445. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  446. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  447. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1018
  448. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  449. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  450. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  451. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  452. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  453. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  454. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  455. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1747
  456. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  457. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1765
  458. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  459. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  460. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  461. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  462. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  463. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1594
  464. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -320
  465. package/contracts/instance/base/Lifecycle.sol +0 -121
  466. package/contracts/instance/module/ISetup.sol +0 -33
  467. package/contracts/instance/module/ITreasury.sol +0 -23
  468. package/contracts/registry/ReleaseManager.sol +0 -465
  469. package/contracts/shared/AccessManagerCustom.sol +0 -736
  470. package/contracts/shared/AccessManagerExtended.sol +0 -469
  471. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  472. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -125
  473. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  474. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  475. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  476. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -17
@@ -0,0 +1,615 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
+
6
+ import {Amount, AmountLib} from "../type/Amount.sol";
7
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
8
+ import {ChainNft} from "../registry/ChainNft.sol";
9
+ import {Component} from "../shared/Component.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
12
+ import {IStaking} from "./IStaking.sol";
13
+ import {IVersionable} from "../shared/IVersionable.sol";
14
+ import {Key32} from "../type/Key32.sol";
15
+ import {KeyValueStore} from "../shared/KeyValueStore.sol";
16
+ import {KEEP_STATE} from "../type/StateId.sol";
17
+ import {NftId, NftIdLib} from "../type/NftId.sol";
18
+ import {NftIdSet} from "../shared/NftIdSet.sol";
19
+ import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
20
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
21
+ import {StakingReader} from "./StakingReader.sol";
22
+ import {TargetManagerLib} from "./TargetManagerLib.sol";
23
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
24
+ import {TokenRegistry} from "../registry/TokenRegistry.sol";
25
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
26
+ import {Version, VersionLib} from "../type/Version.sol";
27
+ import {Versionable} from "../shared/Versionable.sol";
28
+
29
+ import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
30
+ import {StakingLifecycle} from "./StakingLifecycle.sol";
31
+
32
+
33
+ contract StakingStore is
34
+ AccessManaged,
35
+ KeyValueStore,
36
+ StakingLifecycle
37
+ {
38
+
39
+ event LogStakingStoreReserveBalanceIncreased(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdatedIn);
40
+ event LogStakingStoreReserveBalanceDecreased(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdatedIn);
41
+
42
+ event LogStakingStoreTotalValueLockedIncreased(NftId targetNftId, address token, Amount amount, Amount newBalance, Blocknumber lastUpdatedIn);
43
+ event LogStakingStoreTotalValueLockedDecreased(NftId targetNftId, address token, Amount amount, Amount newBalance, Blocknumber lastUpdatedIn);
44
+
45
+ event LogStakingStoreStakesIncreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
46
+ event LogStakingStoreStakesDecreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
47
+
48
+ event LogStakingStoreRewardsIncreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
49
+ event LogStakingStoreRewardsDecreased(NftId nftId, Amount addedAmount, Amount newBalance, Blocknumber lastUpdatedIn);
50
+
51
+ event LogStakingStoreRewardsRestaked(NftId nftId, Amount amount, Amount rewardAmount, Amount rewardIncrementAmount, Amount newBalance, Blocknumber lastUpdatedIn);
52
+
53
+ // in/decreasing reward reserves
54
+ error ErrorStakingStoreNotTarget(NftId targetNftId);
55
+ error ErrorStakingStoreRewardReservesInsufficient(NftId targetNftId, Amount dipAmount, Amount reservesBalanceAmount);
56
+
57
+ // creating and updating of balance
58
+ error ErrorStakingStoreBalanceAlreadyInitialized(NftId nftId);
59
+ error ErrorStakingStoreBalanceNotInitialized(NftId nftId);
60
+
61
+ // update balance
62
+ error ErrorStakingStoreTvlBalanceNotInitialized(NftId nftId);
63
+
64
+ IRegistry private _registry;
65
+ NftIdSet private _targetNftIdSet;
66
+ StakingReader private _reader;
67
+
68
+ // staking rate
69
+ mapping(uint256 chainId => mapping(address token => UFixed stakingRate)) private _stakingRate;
70
+
71
+ // total, stake and reward balances
72
+ mapping(NftId nftId => Amount stakes) private _stakeBalance;
73
+ mapping(NftId nftId => Amount rewards) private _rewardBalance;
74
+ mapping(NftId nftId => Amount reserves) private _reserveBalance;
75
+
76
+ mapping(NftId nftId => Timestamp lastUpdatedAt) private _lastUpdatedAt;
77
+ mapping(NftId nftId => Blocknumber lastUpdatedIn) private _lastUpdatedIn;
78
+
79
+ // total value locked balance
80
+ mapping(NftId nftId => mapping(address token => Amount tvl)) private _tvlBalance;
81
+ mapping(NftId nftId => mapping(address token => Amount tvlInDip)) private _tvlInDip;
82
+ mapping(NftId nftId => Amount tvlRequiredDip) private _tvlRequiredDip;
83
+ mapping(NftId nftId => Blocknumber lastUpdatedIn) private _tvlLastUpdatedIn;
84
+
85
+
86
+ constructor(IRegistry registry, StakingReader reader)
87
+ AccessManaged(msg.sender)
88
+ {
89
+ // set final authority
90
+ setAuthority(registry.getAuthority());
91
+
92
+ // set internal variables
93
+ _registry = registry; //TODO if keeps registry -> RegistryLinked and checks registry address
94
+ _reader = reader;
95
+ _targetNftIdSet = new NftIdSet();
96
+
97
+ // register protocol target
98
+ _createTarget(
99
+ NftIdLib.toNftId(1101),
100
+ IStaking.TargetInfo({
101
+ objectType: PROTOCOL(),
102
+ chainId: 1,
103
+ lockingPeriod: TargetManagerLib.getDefaultLockingPeriod(),
104
+ rewardRate: TargetManagerLib.getDefaultRewardRate()}));
105
+ }
106
+
107
+
108
+ //--- staking rate specific functions -----------------------------------//
109
+
110
+ function setStakingRate(
111
+ uint256 chainId,
112
+ address token,
113
+ UFixed stakingRate
114
+ )
115
+ external
116
+ restricted()
117
+ {
118
+ _stakingRate[chainId][token] = stakingRate;
119
+ }
120
+
121
+ //--- target specific functions -----------------------------------------//
122
+
123
+ function createTarget(
124
+ NftId targetNftId,
125
+ IStaking.TargetInfo memory targetInfo
126
+ )
127
+ external
128
+ restricted()
129
+ {
130
+ _createTarget(targetNftId, targetInfo);
131
+ }
132
+
133
+
134
+ function updateTarget(
135
+ NftId targetNftId,
136
+ IStaking.TargetInfo memory targetInfo
137
+ )
138
+ external
139
+ restricted()
140
+ {
141
+ _update(
142
+ targetNftId.toKey32(TARGET()),
143
+ abi.encode(targetInfo), KEEP_STATE());
144
+ }
145
+
146
+
147
+ function increaseReserves(
148
+ NftId targetNftId,
149
+ Amount dipAmount
150
+ )
151
+ external
152
+ restricted()
153
+ returns (Amount newReserveBalance)
154
+ {
155
+ newReserveBalance = _reserveBalance[targetNftId] + dipAmount;
156
+ Blocknumber lastUpdatedIn = _updateReserves(targetNftId, newReserveBalance);
157
+
158
+ emit LogStakingStoreReserveBalanceIncreased(targetNftId, dipAmount, newReserveBalance, lastUpdatedIn);
159
+ }
160
+
161
+
162
+ function decreaseReserves(
163
+ NftId targetNftId,
164
+ Amount dipAmount
165
+ )
166
+ external
167
+ restricted()
168
+ returns (Amount newReserveBalance)
169
+ {
170
+ Amount reserveAmount = _reserveBalance[targetNftId];
171
+ if (dipAmount > reserveAmount) {
172
+ revert ErrorStakingStoreRewardReservesInsufficient(
173
+ targetNftId,
174
+ dipAmount,
175
+ reserveAmount);
176
+ }
177
+
178
+ newReserveBalance = _reserveBalance[targetNftId] - dipAmount;
179
+ Blocknumber lastUpdatedIn = _updateReserves(targetNftId, newReserveBalance);
180
+
181
+ emit LogStakingStoreReserveBalanceDecreased(targetNftId, dipAmount, newReserveBalance, lastUpdatedIn);
182
+ }
183
+
184
+
185
+ //--- tvl specific functions -------------------------------------//
186
+
187
+ function increaseTotalValueLocked(
188
+ NftId targetNftId,
189
+ UFixed stakingRate,
190
+ address token,
191
+ Amount amount
192
+ )
193
+ external
194
+ restricted()
195
+ returns (Amount newBalance)
196
+ {
197
+ (
198
+ Blocknumber tvlLastUpdatedIn,
199
+ Amount oldBalance,
200
+ Amount oldDipBalance
201
+ ) = _getAndVerifyTvl(targetNftId, token);
202
+
203
+ newBalance = oldBalance + amount;
204
+ Amount newDipBalance = newBalance.multiplyWith(stakingRate);
205
+
206
+ // update new tvl balances
207
+ _tvlBalance[targetNftId][token] = newBalance;
208
+ _tvlInDip[targetNftId][token] = newDipBalance;
209
+
210
+ // update new amount of required dip
211
+ _tvlRequiredDip[targetNftId] = _tvlRequiredDip[targetNftId] - oldDipBalance + newDipBalance;
212
+
213
+ // update last updated in
214
+ _tvlLastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
215
+
216
+ emit LogStakingStoreTotalValueLockedIncreased(targetNftId, token, amount, newBalance, tvlLastUpdatedIn);
217
+ }
218
+
219
+
220
+ function decreaseTotalValueLocked(
221
+ NftId targetNftId,
222
+ UFixed stakingRate,
223
+ address token,
224
+ Amount amount
225
+ )
226
+ external
227
+ restricted()
228
+ returns (Amount newBalance)
229
+ {
230
+ (
231
+ Blocknumber tvlLastUpdatedIn,
232
+ Amount oldBalance,
233
+ Amount oldDipBalance
234
+ ) = _getAndVerifyTvl(targetNftId, token);
235
+
236
+ newBalance = oldBalance - amount;
237
+ Amount newDipBalance = AmountLib.toAmount((
238
+ stakingRate * newBalance.toUFixed()).toInt());
239
+
240
+ // update new tvl balances
241
+ _tvlBalance[targetNftId][token] = newBalance;
242
+ _tvlInDip[targetNftId][token] = newDipBalance;
243
+
244
+ // update new amount of required dip
245
+ _tvlRequiredDip[targetNftId] = _tvlRequiredDip[targetNftId] - oldDipBalance + newDipBalance;
246
+
247
+ // update last updated in
248
+ _tvlLastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
249
+
250
+ emit LogStakingStoreTotalValueLockedDecreased(targetNftId, token, amount, newBalance, tvlLastUpdatedIn);
251
+ }
252
+
253
+ //--- stake specific functions -------------------------------------//
254
+
255
+ function create(
256
+ NftId stakeNftId,
257
+ IStaking.StakeInfo memory stakeInfo
258
+ )
259
+ external
260
+ restricted()
261
+ {
262
+ _create(
263
+ stakeNftId.toKey32(STAKE()),
264
+ abi.encode(stakeInfo));
265
+
266
+ _createStakeBalance(stakeNftId);
267
+ }
268
+
269
+ function update(
270
+ NftId stakeNftId,
271
+ IStaking.StakeInfo memory stakeInfo
272
+ )
273
+ external
274
+ restricted()
275
+ {
276
+ _update(
277
+ stakeNftId.toKey32(STAKE()),
278
+ abi.encode(stakeInfo),
279
+ KEEP_STATE());
280
+ }
281
+
282
+ //--- general functions --------------------------------------------//
283
+
284
+
285
+ function increaseStake(
286
+ NftId nftId,
287
+ NftId targetNftId,
288
+ Amount amount
289
+ )
290
+ external
291
+ restricted()
292
+ {
293
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
294
+
295
+ _updateStakeBalance(
296
+ nftId,
297
+ _stakeBalance[nftId] + amount, // new stake balance
298
+ _rewardBalance[nftId]); // unchanged reward balance
299
+
300
+ _updateTargetBalance(
301
+ targetNftId,
302
+ _stakeBalance[targetNftId] + amount,
303
+ _rewardBalance[targetNftId]);
304
+
305
+ emit LogStakingStoreStakesIncreased(nftId, amount, _stakeBalance[nftId], lastUpdatedIn);
306
+ }
307
+
308
+
309
+ function restakeRewards(
310
+ NftId nftId,
311
+ NftId targetNftId,
312
+ Amount rewardIncrementAmount
313
+ )
314
+ external
315
+ restricted()
316
+ {
317
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
318
+ Amount stakeAmount = _stakeBalance[nftId];
319
+ Amount rewardAmount = _rewardBalance[nftId];
320
+
321
+ // move all rewards to stake balance
322
+ _updateStakeBalance(
323
+ nftId,
324
+ stakeAmount + rewardAmount + rewardIncrementAmount, // new stake balance
325
+ AmountLib.zero()); // new reward balance
326
+
327
+ _updateTargetBalance(
328
+ targetNftId,
329
+ _stakeBalance[targetNftId] + rewardAmount + rewardIncrementAmount,
330
+ _rewardBalance[targetNftId] - rewardAmount);
331
+
332
+ emit LogStakingStoreRewardsRestaked(nftId, stakeAmount, rewardAmount, rewardIncrementAmount, _stakeBalance[nftId], lastUpdatedIn);
333
+ }
334
+
335
+
336
+ function updateRewards(
337
+ NftId nftId,
338
+ NftId targetNftId,
339
+ Amount rewardIncrementAmount
340
+ )
341
+ external
342
+ restricted()
343
+ {
344
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
345
+
346
+ // increse rewards by increment
347
+ _updateStakeBalance(
348
+ nftId,
349
+ _stakeBalance[nftId], // unchanged stake balance
350
+ _rewardBalance[nftId] + rewardIncrementAmount); // new reward balance
351
+
352
+ _updateTargetBalance(
353
+ targetNftId,
354
+ _stakeBalance[targetNftId],
355
+ _rewardBalance[targetNftId] + rewardIncrementAmount);
356
+
357
+ emit LogStakingStoreRewardsIncreased(nftId, rewardIncrementAmount, _rewardBalance[nftId], lastUpdatedIn);
358
+ }
359
+
360
+
361
+ function claimUpTo(
362
+ NftId nftId,
363
+ NftId targetNftId,
364
+ Amount maxClaimAmount
365
+ )
366
+ external
367
+ restricted()
368
+ returns (Amount claimedAmount)
369
+ {
370
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
371
+
372
+ // determine the claimable rewards amount
373
+ claimedAmount = AmountLib.min(maxClaimAmount, _rewardBalance[nftId]);
374
+
375
+ // decrease rewards by claimed amount
376
+ _updateStakeBalance(
377
+ nftId,
378
+ _stakeBalance[nftId], // unchanged stake balance
379
+ _rewardBalance[nftId] - claimedAmount); // new reward balance
380
+
381
+ _updateTargetBalance(
382
+ targetNftId,
383
+ _stakeBalance[targetNftId],
384
+ _rewardBalance[targetNftId] - claimedAmount);
385
+
386
+ emit LogStakingStoreRewardsDecreased(nftId, claimedAmount, _rewardBalance[nftId], lastUpdatedIn);
387
+ }
388
+
389
+
390
+ function unstakeUpTo(
391
+ NftId nftId,
392
+ NftId targetNftId,
393
+ Amount maxUnstakeAmount,
394
+ Amount maxClaimAmount
395
+ )
396
+ external
397
+ restricted()
398
+ returns (
399
+ Amount unstakedAmount,
400
+ Amount claimedAmount
401
+ )
402
+ {
403
+ Blocknumber lastUpdatedIn = _checkBalanceExists(nftId);
404
+
405
+ // determine amounts
406
+ unstakedAmount = AmountLib.min(maxUnstakeAmount, _stakeBalance[nftId]);
407
+ claimedAmount = AmountLib.min(maxClaimAmount, _rewardBalance[nftId]);
408
+
409
+ // decrease stakes and rewards as determined
410
+ _updateStakeBalance(
411
+ nftId,
412
+ _stakeBalance[nftId] - unstakedAmount, // unchanged stake balance
413
+ _rewardBalance[nftId] - claimedAmount); // new reward balance
414
+
415
+ _updateTargetBalance(
416
+ targetNftId,
417
+ _stakeBalance[targetNftId] - unstakedAmount,
418
+ _rewardBalance[targetNftId] - claimedAmount);
419
+
420
+ emit LogStakingStoreStakesDecreased(nftId, unstakedAmount, _stakeBalance[nftId], lastUpdatedIn);
421
+ emit LogStakingStoreRewardsDecreased(nftId, claimedAmount, _rewardBalance[nftId], lastUpdatedIn);
422
+ }
423
+
424
+ //--- view functions -----------------------------------------------//
425
+
426
+ function getStakingReader() external view returns (StakingReader stakingReader){
427
+ return _reader;
428
+ }
429
+
430
+ // TODO rename
431
+ function getTargetNftIdSet() external view returns (NftIdSet targetNftIdSet){
432
+ return _targetNftIdSet;
433
+ }
434
+
435
+ function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) { return _stakingRate[chainId][token]; }
436
+
437
+ function exists(NftId stakeNftId) external view returns (bool) { return exists(stakeNftId.toKey32(STAKE())); }
438
+
439
+ function getTotalValueLocked(NftId nftId, address token) external view returns (Amount tvlBalanceAmount) { return _tvlBalance[nftId][token]; }
440
+ function getRequiredStakeBalance(NftId nftId) external view returns (Amount requiredAmount) { return _tvlRequiredDip[nftId]; }
441
+
442
+ function getReserveBalance(NftId nftId) external view returns (Amount balanceAmount) { return _reserveBalance[nftId]; }
443
+ function getStakeBalance(NftId nftId) external view returns (Amount balanceAmount) { return _stakeBalance[nftId]; }
444
+ function getRewardBalance(NftId nftId) external view returns (Amount rewardAmount) { return _rewardBalance[nftId]; }
445
+ function getBalanceUpdatedAt(NftId nftId) external view returns (Timestamp updatedAt) { return _lastUpdatedAt[nftId]; }
446
+ function getBalanceUpdatedIn(NftId nftId) external view returns (Blocknumber blocknumber) { return _lastUpdatedIn[nftId]; }
447
+
448
+
449
+ function getTargetBalances(NftId nftId)
450
+ external
451
+ view
452
+ returns (
453
+ Amount stakeBalance,
454
+ Amount rewardBalance,
455
+ Amount reserveBalance,
456
+ Blocknumber lastUpdatedIn
457
+ )
458
+ {
459
+ stakeBalance = _stakeBalance[nftId];
460
+ rewardBalance = _rewardBalance[nftId];
461
+ reserveBalance = _reserveBalance[nftId];
462
+ lastUpdatedIn = _lastUpdatedIn[nftId];
463
+ }
464
+
465
+
466
+ function getStakeBalances(NftId nftId)
467
+ external
468
+ view
469
+ returns (
470
+ Amount stakeBalance,
471
+ Amount rewardBalance,
472
+ Timestamp lastUpdatedAt
473
+ )
474
+ {
475
+ stakeBalance = _stakeBalance[nftId];
476
+ rewardBalance = _rewardBalance[nftId];
477
+ lastUpdatedAt = _lastUpdatedAt[nftId];
478
+ }
479
+
480
+ //--- private functions -------------------------------------------//
481
+
482
+ function _createTarget(
483
+ NftId targetNftId,
484
+ IStaking.TargetInfo memory targetInfo
485
+ )
486
+ private
487
+ {
488
+ _create(
489
+ targetNftId.toKey32(TARGET()),
490
+ abi.encode(targetInfo));
491
+
492
+ // initialize tvl and stake balance
493
+ _tvlLastUpdatedIn[targetNftId]= BlocknumberLib.currentBlocknumber();
494
+ _createTargetBalance(targetNftId);
495
+
496
+ _targetNftIdSet.add(targetNftId);
497
+ }
498
+
499
+ function _updateReserves(
500
+ NftId targetNftId,
501
+ Amount newRewardBalance
502
+ )
503
+ private
504
+ returns (Blocknumber lastUpdatedIn)
505
+ {
506
+ if (_lastUpdatedIn[targetNftId].eqz()) {
507
+ revert ErrorStakingStoreNotTarget(targetNftId);
508
+ }
509
+
510
+ lastUpdatedIn = _lastUpdatedIn[targetNftId];
511
+
512
+ _reserveBalance[targetNftId] = newRewardBalance;
513
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
514
+ }
515
+
516
+
517
+ function _createTargetBalance(NftId nftId)
518
+ private
519
+ {
520
+ if (_lastUpdatedIn[nftId].gtz()) {
521
+ revert ErrorStakingStoreBalanceAlreadyInitialized(nftId);
522
+ }
523
+
524
+ // set target balances to 0
525
+ _stakeBalance[nftId] = AmountLib.zero();
526
+ _rewardBalance[nftId] = AmountLib.zero();
527
+ _reserveBalance[nftId] = AmountLib.zero();
528
+
529
+ // set last updated in to current block number
530
+ // we don't need last updated at timestamp for targets
531
+ _lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
532
+ }
533
+
534
+
535
+ function _createStakeBalance(NftId nftId)
536
+ private
537
+ {
538
+ if (_lastUpdatedIn[nftId].gtz()) {
539
+ revert ErrorStakingStoreBalanceAlreadyInitialized(nftId);
540
+ }
541
+
542
+ // set stake balances to 0
543
+ _stakeBalance[nftId] = AmountLib.zero();
544
+ _rewardBalance[nftId] = AmountLib.zero();
545
+
546
+ // set last updated at/in to current timestamp/block number
547
+ _lastUpdatedAt[nftId] = TimestampLib.blockTimestamp();
548
+ _lastUpdatedIn[nftId] = BlocknumberLib.currentBlocknumber();
549
+ }
550
+
551
+
552
+ function _updateStakeBalance(
553
+ NftId stakeNftId,
554
+ Amount newStakeAmount,
555
+ Amount newRewardAmount
556
+ )
557
+ private
558
+ {
559
+ _stakeBalance[stakeNftId] = newStakeAmount;
560
+ _rewardBalance[stakeNftId] = newRewardAmount;
561
+
562
+ _lastUpdatedAt[stakeNftId] = TimestampLib.blockTimestamp();
563
+ _lastUpdatedIn[stakeNftId] = BlocknumberLib.currentBlocknumber();
564
+ }
565
+
566
+
567
+ function _updateTargetBalance(
568
+ NftId targetNftId,
569
+ Amount newStakeAmount,
570
+ Amount newRewardAmount
571
+ )
572
+ private
573
+ {
574
+ _stakeBalance[targetNftId] = newStakeAmount;
575
+ _rewardBalance[targetNftId] = newRewardAmount;
576
+
577
+ // for targets we don't need the timestamp, just the blocknumber
578
+ _lastUpdatedIn[targetNftId] = BlocknumberLib.currentBlocknumber();
579
+ }
580
+
581
+ function _checkBalanceExists(NftId nftId)
582
+ private
583
+ view
584
+ returns (Blocknumber lastUpdatedIn)
585
+ {
586
+ lastUpdatedIn = _lastUpdatedIn[nftId];
587
+
588
+ if (lastUpdatedIn.eqz()) {
589
+ revert ErrorStakingStoreBalanceNotInitialized(nftId);
590
+ }
591
+ }
592
+
593
+
594
+ function _getAndVerifyTvl(
595
+ NftId targetNftId,
596
+ address token
597
+ )
598
+ private
599
+ view
600
+ returns (
601
+ Blocknumber tvlLastUpdatedIn,
602
+ Amount oldBalance,
603
+ Amount oldDipBalance
604
+ )
605
+ {
606
+ tvlLastUpdatedIn = _tvlLastUpdatedIn[targetNftId];
607
+
608
+ if (tvlLastUpdatedIn.eqz()) {
609
+ revert ErrorStakingStoreTvlBalanceNotInitialized(targetNftId);
610
+ }
611
+
612
+ oldBalance = _tvlBalance[targetNftId][token];
613
+ oldDipBalance = _tvlInDip[targetNftId][token];
614
+ }
615
+ }