@etherisc/gif-next 0.0.2-9542215-990 → 0.0.2-9620cae-586

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 (643) hide show
  1. package/README.md +106 -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/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  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 +547 -246
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +482 -146
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +399 -2954
  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 +777 -299
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +680 -223
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +386 -76
  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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  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/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  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/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +310 -358
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  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/product/BasicProduct.sol/BasicProduct.json +1299 -0
  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/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +236 -190
  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/product/IPolicyService.sol/IPolicyService.json +720 -0
  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} +266 -278
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +145 -166
  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 +525 -59
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +346 -278
  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 +822 -277
  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 +530 -339
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +346 -129
  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/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  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 +4 -0
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  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/ServiceBase.sol/ServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +235 -164
  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/shared/IComponent.sol/IComponent.json +631 -0
  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/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  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 -35
  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 +4 -0
  203. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +107 -75
  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/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  215. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  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 -62
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  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 +4 -0
  227. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +198 -172
  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/type/AddressSet.sol/LibAddressSet.json +10 -0
  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/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  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/type/Key32.sol/Key32Lib.json +125 -0
  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/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  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/type/RiskId.sol/RiskIdLib.json +86 -0
  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/type/UFixed.sol/MathLib.json +10 -0
  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/type/Version.sol/VersionLib.json +177 -0
  304. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  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/BundleSet.sol +126 -0
  324. package/contracts/instance/IInstance.sol +74 -16
  325. package/contracts/instance/IInstanceService.sol +84 -9
  326. package/contracts/instance/Instance.sol +184 -366
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  329. package/contracts/instance/InstanceReader.sol +188 -63
  330. package/contracts/instance/InstanceService.sol +398 -57
  331. package/contracts/instance/InstanceServiceManager.sol +12 -24
  332. package/contracts/instance/InstanceStore.sol +276 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/base/Cloneable.sol +28 -0
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/base/ObjectSet.sol +79 -0
  338. package/contracts/instance/module/IAccess.sol +29 -21
  339. package/contracts/instance/module/IBundle.sol +8 -7
  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/Usdc.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 +451 -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 +15 -0
  383. package/contracts/registry/IRegistry.sol +91 -14
  384. package/contracts/registry/IRegistryService.sol +54 -20
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +396 -243
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +124 -297
  389. package/contracts/registry/RegistryServiceManager.sol +25 -36
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseRegistry.sol +487 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +315 -0
  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 -9
  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 +4 -6
  407. package/contracts/shared/IRegistryLinked.sol +11 -0
  408. package/contracts/shared/IService.sol +25 -0
  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/NftIdSet.sol +65 -0
  415. package/contracts/shared/NftOwnable.sol +60 -89
  416. package/contracts/shared/PolicyHolder.sol +102 -0
  417. package/contracts/shared/ProxyManager.sol +131 -26
  418. package/contracts/shared/Registerable.sol +26 -40
  419. package/contracts/shared/RegistryLinked.sol +43 -0
  420. package/contracts/shared/Service.sol +83 -0
  421. package/contracts/shared/TokenHandler.sol +37 -6
  422. package/contracts/shared/Versionable.sol +4 -92
  423. package/contracts/staking/IStaking.sol +167 -0
  424. package/contracts/staking/IStakingService.sol +160 -0
  425. package/contracts/staking/StakeManagerLib.sol +231 -0
  426. package/contracts/staking/Staking.sol +511 -0
  427. package/contracts/staking/StakingLifecycle.sol +23 -0
  428. package/contracts/staking/StakingManager.sol +53 -0
  429. package/contracts/staking/StakingReader.sol +186 -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/type/NftIdSet.sol +62 -0
  442. package/contracts/type/ObjectType.sol +271 -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 +38 -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 +8 -2
  455. package/package.json +10 -7
  456. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  457. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  459. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  460. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  465. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  466. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  467. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  468. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  469. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  470. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  473. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  475. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  477. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  479. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  481. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  483. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  485. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  487. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  494. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  496. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  498. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  501. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  503. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  505. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  507. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  509. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  510. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  511. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  512. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  513. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  514. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  515. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  516. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  518. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  519. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  523. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  525. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  526. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  527. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  528. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  530. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  533. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  535. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  536. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  537. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  538. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  539. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  540. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  541. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  542. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  543. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  544. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  545. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  546. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  547. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  548. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  549. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  550. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  551. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  552. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  553. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  554. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  555. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  557. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  559. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  561. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  563. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  564. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  565. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  567. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  568. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  569. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  571. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  572. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  573. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  574. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  575. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  576. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  577. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  579. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  582. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  584. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  586. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  588. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  590. package/contracts/components/BaseComponent.sol +0 -86
  591. package/contracts/components/Distribution.sol +0 -166
  592. package/contracts/components/IBaseComponent.sol +0 -24
  593. package/contracts/components/IDistributionComponent.sol +0 -43
  594. package/contracts/components/IPoolComponent.sol +0 -62
  595. package/contracts/components/IProductComponent.sol +0 -35
  596. package/contracts/components/Pool.sol +0 -259
  597. package/contracts/components/Product.sol +0 -297
  598. package/contracts/experiment/cloning/Cloner.sol +0 -47
  599. package/contracts/experiment/errors/Require.sol +0 -38
  600. package/contracts/experiment/errors/Revert.sol +0 -44
  601. package/contracts/experiment/inheritance/A.sol +0 -53
  602. package/contracts/experiment/inheritance/B.sol +0 -28
  603. package/contracts/experiment/inheritance/C.sol +0 -34
  604. package/contracts/experiment/inheritance/IA.sol +0 -13
  605. package/contracts/experiment/inheritance/IB.sol +0 -10
  606. package/contracts/experiment/inheritance/IC.sol +0 -12
  607. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  608. package/contracts/experiment/statemachine/ISM.sol +0 -25
  609. package/contracts/experiment/statemachine/SM.sol +0 -57
  610. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  611. package/contracts/experiment/types/TypeA.sol +0 -47
  612. package/contracts/experiment/types/TypeB.sol +0 -29
  613. package/contracts/instance/AccessManagedSimple.sol +0 -114
  614. package/contracts/instance/AccessManagerSimple.sol +0 -682
  615. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  616. package/contracts/instance/InstanceAccessManager.sol +0 -288
  617. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  618. package/contracts/instance/base/IInstanceBase.sol +0 -23
  619. package/contracts/instance/base/IService.sol +0 -15
  620. package/contracts/instance/base/KeyValueStore.sol +0 -172
  621. package/contracts/instance/base/Lifecycle.sol +0 -100
  622. package/contracts/instance/base/ServiceBase.sol +0 -44
  623. package/contracts/instance/module/ISetup.sol +0 -43
  624. package/contracts/instance/module/ITreasury.sol +0 -23
  625. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  626. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  627. package/contracts/instance/service/IDistributionService.sol +0 -12
  628. package/contracts/instance/service/IPoolService.sol +0 -37
  629. package/contracts/instance/service/IProductService.sol +0 -107
  630. package/contracts/shared/ContractDeployerLib.sol +0 -72
  631. package/contracts/test/TestFee.sol +0 -25
  632. package/contracts/test/TestRegisterable.sol +0 -18
  633. package/contracts/test/TestRoleId.sol +0 -14
  634. package/contracts/test/TestService.sol +0 -26
  635. package/contracts/test/TestToken.sol +0 -26
  636. package/contracts/test/TestVersion.sol +0 -44
  637. package/contracts/test/TestVersionable.sol +0 -17
  638. package/contracts/types/ChainId.sol +0 -38
  639. package/contracts/types/NftIdSet.sol +0 -60
  640. package/contracts/types/NumberId.sol +0 -52
  641. package/contracts/types/ObjectType.sol +0 -152
  642. package/contracts/types/RoleId.sol +0 -82
  643. /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 {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
+ }