@etherisc/gif-next 0.0.2-c9b0563-536 → 0.0.2-ca77f81-925

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