@etherisc/gif-next 0.0.2-851536d → 0.0.2-85cbb88-630

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 (587) hide show
  1. package/README.md +388 -8
  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/access → authorization}/IAccess.sol/IAccess.json +1 -1
  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 +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
  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 +289 -529
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +446 -609
  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 +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1735 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1160 -0
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  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 +4 -0
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  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 +4 -0
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  70. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  74. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  78. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  79. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  80. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  82. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  84. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  86. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  88. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  138. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/product/IProductService.sol/IProductService.json +400 -0
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  149. package/artifacts/contracts/product/Product.sol/Product.json +1257 -0
  150. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  152. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +639 -56
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1123 -0
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +964 -125
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  179. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  186. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  187. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +110 -0
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  199. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
  208. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  210. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  212. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  214. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  218. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  224. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  227. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  229. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  230. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  231. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  233. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  234. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  235. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  236. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  237. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  294. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  296. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  298. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  300. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  302. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  304. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  306. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  308. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  310. package/contracts/authorization/AccessAdmin.sol +591 -0
  311. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  312. package/contracts/authorization/Authorization.sol +218 -0
  313. package/contracts/authorization/IAccess.sol +48 -0
  314. package/contracts/authorization/IAccessAdmin.sol +136 -0
  315. package/contracts/authorization/IAuthorization.sol +54 -0
  316. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  317. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  318. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  319. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  320. package/contracts/distribution/BasicDistribution.sol +149 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  322. package/contracts/distribution/Distribution.sol +283 -0
  323. package/contracts/distribution/DistributionService.sol +302 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  325. package/contracts/distribution/IDistributionComponent.sol +48 -0
  326. package/contracts/distribution/IDistributionService.sol +85 -0
  327. package/contracts/instance/BundleSet.sol +126 -0
  328. package/contracts/instance/IInstance.sol +81 -15
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +235 -45
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +44 -0
  336. package/contracts/instance/InstanceStore.sol +276 -0
  337. package/contracts/instance/base/BalanceStore.sol +123 -0
  338. package/contracts/instance/base/Cloneable.sol +28 -0
  339. package/contracts/instance/base/ObjectCounter.sol +21 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  341. package/contracts/instance/base/ObjectSet.sol +79 -0
  342. package/contracts/instance/module/IAccess.sol +46 -0
  343. package/contracts/instance/module/IBundle.sol +20 -0
  344. package/contracts/instance/module/IComponents.sol +52 -0
  345. package/contracts/instance/module/IDistribution.sol +42 -0
  346. package/contracts/instance/module/IPolicy.sol +84 -0
  347. package/contracts/instance/module/IRisk.sol +11 -0
  348. package/contracts/mock/Dip.sol +26 -0
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +36 -0
  352. package/contracts/oracle/IOracleComponent.sol +32 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +157 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +42 -0
  357. package/contracts/pool/BasicPool.sol +164 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  359. package/contracts/pool/BundleService.sol +296 -0
  360. package/contracts/pool/BundleServiceManager.sol +42 -0
  361. package/contracts/pool/IBundleService.sol +106 -0
  362. package/contracts/pool/IPoolComponent.sol +52 -0
  363. package/contracts/pool/IPoolService.sol +150 -0
  364. package/contracts/pool/Pool.sol +311 -0
  365. package/contracts/pool/PoolService.sol +451 -0
  366. package/contracts/pool/PoolServiceManager.sol +42 -0
  367. package/contracts/product/ApplicationService.sol +254 -0
  368. package/contracts/product/ApplicationServiceManager.sol +38 -0
  369. package/contracts/product/BasicProduct.sol +82 -0
  370. package/contracts/product/BasicProductAuthorization.sol +40 -0
  371. package/contracts/product/ClaimService.sol +442 -0
  372. package/contracts/product/ClaimServiceManager.sol +38 -0
  373. package/contracts/product/IApplicationService.sol +62 -0
  374. package/contracts/product/IClaimService.sol +99 -0
  375. package/contracts/product/IPolicyService.sol +78 -0
  376. package/contracts/product/IPricingService.sol +39 -0
  377. package/contracts/product/IProductComponent.sol +39 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +475 -0
  380. package/contracts/product/PolicyServiceManager.sol +42 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +42 -0
  383. package/contracts/product/Product.sol +392 -0
  384. package/contracts/product/ProductService.sol +124 -0
  385. package/contracts/product/ProductServiceManager.sol +42 -0
  386. package/contracts/registry/ChainNft.sol +152 -108
  387. package/contracts/registry/IRegistry.sol +100 -49
  388. package/contracts/registry/IRegistryService.sol +69 -0
  389. package/contracts/registry/ITransferInterceptor.sol +7 -0
  390. package/contracts/registry/Registry.sol +515 -119
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +266 -0
  393. package/contracts/registry/RegistryServiceManager.sol +53 -0
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseRegistry.sol +487 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  397. package/contracts/registry/TokenRegistry.sol +315 -0
  398. package/contracts/shared/Component.sol +281 -0
  399. package/contracts/shared/ComponentService.sol +581 -0
  400. package/contracts/shared/ComponentServiceManager.sol +35 -0
  401. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  402. package/contracts/shared/ERC165.sol +27 -0
  403. package/contracts/shared/IComponent.sol +70 -0
  404. package/contracts/shared/IComponentService.sol +102 -0
  405. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  406. package/contracts/shared/IKeyValueStore.sol +54 -0
  407. package/contracts/shared/ILifecycle.sol +29 -0
  408. package/contracts/shared/INftOwnable.sol +23 -0
  409. package/contracts/shared/IPolicyHolder.sol +45 -0
  410. package/contracts/shared/IRegisterable.sol +15 -0
  411. package/contracts/shared/IRegistryLinked.sol +11 -0
  412. package/contracts/shared/IService.sol +25 -0
  413. package/contracts/shared/IVersionable.sol +53 -0
  414. package/contracts/shared/InitializableCustom.sol +177 -0
  415. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  416. package/contracts/shared/KeyValueStore.sol +131 -0
  417. package/contracts/shared/Lifecycle.sol +77 -0
  418. package/contracts/shared/NftIdSet.sol +65 -0
  419. package/contracts/shared/NftOwnable.sol +107 -0
  420. package/contracts/shared/PolicyHolder.sol +102 -0
  421. package/contracts/shared/ProxyManager.sol +199 -0
  422. package/contracts/shared/Registerable.sol +75 -0
  423. package/contracts/shared/RegistryLinked.sol +43 -0
  424. package/contracts/shared/Service.sol +83 -0
  425. package/contracts/shared/TokenHandler.sol +58 -0
  426. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  427. package/contracts/shared/Versionable.sol +59 -0
  428. package/contracts/staking/IStaking.sol +167 -0
  429. package/contracts/staking/IStakingService.sol +160 -0
  430. package/contracts/staking/StakeManagerLib.sol +231 -0
  431. package/contracts/staking/Staking.sol +511 -0
  432. package/contracts/staking/StakingLifecycle.sol +23 -0
  433. package/contracts/staking/StakingManager.sol +53 -0
  434. package/contracts/staking/StakingReader.sol +186 -0
  435. package/contracts/staking/StakingService.sol +411 -0
  436. package/contracts/staking/StakingServiceManager.sol +44 -0
  437. package/contracts/staking/StakingStore.sol +615 -0
  438. package/contracts/staking/TargetManagerLib.sol +207 -0
  439. package/contracts/type/AddressSet.sol +58 -0
  440. package/contracts/type/Amount.sol +128 -0
  441. package/contracts/type/Blocknumber.sol +136 -0
  442. package/contracts/type/ClaimId.sol +75 -0
  443. package/contracts/type/DistributorType.sol +55 -0
  444. package/contracts/type/Fee.sol +66 -0
  445. package/contracts/type/Key32.sol +50 -0
  446. package/contracts/type/NftId.sol +78 -0
  447. package/contracts/type/NftIdSet.sol +62 -0
  448. package/contracts/type/ObjectType.sol +275 -0
  449. package/contracts/type/PayoutId.sol +82 -0
  450. package/contracts/type/Referral.sol +89 -0
  451. package/contracts/type/RequestId.sol +75 -0
  452. package/contracts/type/RiskId.sol +43 -0
  453. package/contracts/type/RoleId.sol +174 -0
  454. package/contracts/type/Seconds.sol +81 -0
  455. package/contracts/type/Selector.sol +102 -0
  456. package/contracts/type/StateId.sol +135 -0
  457. package/contracts/type/String.sol +53 -0
  458. package/contracts/type/Timestamp.sol +136 -0
  459. package/contracts/type/UFixed.sol +332 -0
  460. package/contracts/type/Version.sol +108 -0
  461. package/package.json +25 -7
  462. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  463. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  464. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  465. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  466. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  468. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  470. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  471. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  472. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  473. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  474. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  476. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  478. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  480. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  482. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  484. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  488. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  490. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  492. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  494. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  496. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  498. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  499. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  500. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  501. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  502. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  503. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  504. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  505. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  506. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  507. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  508. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  510. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  511. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  512. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  513. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  514. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  515. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  516. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  517. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  518. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  519. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  520. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  521. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  522. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  523. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  524. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  525. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  526. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  527. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  529. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  530. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  532. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  534. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  536. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  537. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  538. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  539. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  540. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  541. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  542. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  543. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  544. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  545. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  546. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  547. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  549. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  551. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  553. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  555. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -440
  557. package/contracts/components/Component.sol +0 -62
  558. package/contracts/components/IPool.sol +0 -9
  559. package/contracts/components/IProduct.sol +0 -12
  560. package/contracts/components/Pool.sol +0 -29
  561. package/contracts/components/Product.sol +0 -66
  562. package/contracts/experiment/errors/Require.sol +0 -33
  563. package/contracts/experiment/errors/Revert.sol +0 -39
  564. package/contracts/experiment/inheritance/A.sol +0 -56
  565. package/contracts/experiment/inheritance/B.sol +0 -23
  566. package/contracts/experiment/inheritance/C.sol +0 -28
  567. package/contracts/experiment/inheritance/IA.sol +0 -18
  568. package/contracts/experiment/inheritance/IB.sol +0 -9
  569. package/contracts/experiment/inheritance/IC.sol +0 -11
  570. package/contracts/experiment/types/TypeA.sol +0 -42
  571. package/contracts/experiment/types/TypeB.sol +0 -24
  572. package/contracts/instance/access/Access.sol +0 -218
  573. package/contracts/instance/access/IAccess.sol +0 -83
  574. package/contracts/instance/component/ComponentModule.sol +0 -248
  575. package/contracts/instance/component/IComponent.sol +0 -95
  576. package/contracts/instance/policy/IPolicy.sol +0 -66
  577. package/contracts/instance/policy/PolicyModule.sol +0 -107
  578. package/contracts/instance/pool/IPoolModule.sol +0 -41
  579. package/contracts/instance/pool/PoolModule.sol +0 -86
  580. package/contracts/instance/product/IProductService.sol +0 -46
  581. package/contracts/instance/product/ProductService.sol +0 -108
  582. package/contracts/registry/IChainNft.sol +0 -18
  583. package/contracts/types/Blocknumber.sol +0 -60
  584. package/contracts/types/ChainId.sol +0 -30
  585. package/contracts/types/NftId.sol +0 -35
  586. package/contracts/types/Timestamp.sol +0 -55
  587. package/contracts/types/UFixed.sol +0 -207
@@ -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
+ }