@etherisc/gif-next 0.0.2-edf4742-498 → 0.0.2-ee0f913-209

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