@wireio/stake 0.4.2 → 0.4.69

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 (558) hide show
  1. package/README.md +185 -243
  2. package/lib/stake.browser.js +52382 -10034
  3. package/lib/stake.browser.js.map +1 -1
  4. package/lib/stake.d.ts +12552 -964
  5. package/lib/stake.js +52993 -10538
  6. package/lib/stake.js.map +1 -1
  7. package/lib/stake.m.js +52382 -10034
  8. package/lib/stake.m.js.map +1 -1
  9. package/package.json +4 -3
  10. package/src/assets/ethereum/hoodi/common/Base58.sol/Base58.dbg.json +4 -0
  11. package/src/assets/ethereum/hoodi/common/Base58.sol/Base58.json +164 -0
  12. package/src/assets/ethereum/hoodi/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.dbg.json +4 -0
  13. package/src/assets/ethereum/hoodi/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.json +76 -0
  14. package/src/assets/ethereum/hoodi/common/RestrictedCallers.sol/RestrictedCallers.dbg.json +4 -0
  15. package/src/assets/ethereum/hoodi/common/RestrictedCallers.sol/RestrictedCallers.json +10 -0
  16. package/src/assets/ethereum/hoodi/common/iodata.sol/iodata.dbg.json +4 -0
  17. package/src/assets/ethereum/hoodi/common/iodata.sol/iodata.json +618 -0
  18. package/src/assets/ethereum/hoodi/common/iodata_util.sol/iodata_util.dbg.json +4 -0
  19. package/src/assets/ethereum/hoodi/common/iodata_util.sol/iodata_util.json +40 -0
  20. package/src/assets/ethereum/hoodi/common/sysio_data.sol/sysio_data.dbg.json +4 -0
  21. package/src/assets/ethereum/hoodi/common/sysio_data.sol/sysio_data.json +10 -0
  22. package/src/assets/ethereum/hoodi/common/sysio_errors.sol/sysio_errors.dbg.json +4 -0
  23. package/src/assets/ethereum/hoodi/common/sysio_errors.sol/sysio_errors.json +10 -0
  24. package/src/assets/ethereum/hoodi/common/sysio_merkle.sol/sysio_merkle.dbg.json +4 -0
  25. package/src/assets/ethereum/hoodi/common/sysio_merkle.sol/sysio_merkle.json +233 -0
  26. package/src/assets/ethereum/hoodi/common/sysio_name.sol/sysio_name.dbg.json +4 -0
  27. package/src/assets/ethereum/hoodi/common/sysio_name.sol/sysio_name.json +49 -0
  28. package/src/assets/ethereum/hoodi/common/sysio_pubkey.sol/sysio_pubkey.dbg.json +4 -0
  29. package/src/assets/ethereum/hoodi/common/sysio_pubkey.sol/sysio_pubkey.json +64 -0
  30. package/src/assets/ethereum/hoodi/common/sysio_read.sol/sysio_read.dbg.json +4 -0
  31. package/src/assets/ethereum/hoodi/common/sysio_read.sol/sysio_read.json +1458 -0
  32. package/src/assets/ethereum/hoodi/common/sysio_tester.sol/SysioTester.dbg.json +4 -0
  33. package/src/assets/ethereum/hoodi/common/sysio_tester.sol/SysioTester.json +1532 -0
  34. package/src/assets/ethereum/hoodi/common/sysio_verify.sol/sysio_verify.dbg.json +4 -0
  35. package/src/assets/ethereum/hoodi/common/sysio_verify.sol/sysio_verify.json +1525 -0
  36. package/src/assets/ethereum/hoodi/common/sysio_write.sol/sysio_write.dbg.json +4 -0
  37. package/src/assets/ethereum/hoodi/common/sysio_write.sol/sysio_write.json +1076 -0
  38. package/src/assets/ethereum/hoodi/liqEth/BeaconState.sol/BeaconState.dbg.json +4 -0
  39. package/src/assets/ethereum/hoodi/liqEth/DepositManager.sol/DepositManagerV2.dbg.json +4 -0
  40. package/src/assets/ethereum/hoodi/liqEth/DepositManager.sol/DepositManagerV2.json +985 -0
  41. package/src/assets/ethereum/hoodi/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +4 -0
  42. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  43. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IAccounting.json +182 -0
  44. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  45. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  46. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  47. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  48. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20.json +319 -0
  49. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  50. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +333 -0
  51. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  52. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IStakingModule.json +1 -1
  53. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  54. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  55. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  56. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/LiqEthCommon.json +2 -2
  57. package/src/assets/ethereum/hoodi/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +4 -0
  58. package/src/assets/ethereum/hoodi/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +236 -0
  59. package/src/assets/ethereum/hoodi/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +4 -0
  60. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthManaged.sol/LiqEthManaged.json +2 -2
  61. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +4 -0
  62. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +957 -0
  63. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +4 -0
  64. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +1020 -0
  65. package/src/assets/ethereum/hoodi/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
  66. package/src/assets/ethereum/{ABI → hoodi}/liqEth/Yield.sol/YieldOracle.json +2 -2
  67. package/src/assets/ethereum/hoodi/liqEth/accounting.sol/AccountingV2.dbg.json +4 -0
  68. package/src/assets/ethereum/hoodi/liqEth/accounting.sol/AccountingV2.json +629 -0
  69. package/src/assets/ethereum/hoodi/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +4 -0
  70. package/src/assets/ethereum/hoodi/liqEth/liqEth.sol/LiqEthTokenV2.json +1323 -0
  71. package/src/assets/ethereum/hoodi/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +4 -0
  72. package/src/assets/ethereum/hoodi/liqEth/stakingModule.sol/StakingModuleV2.json +1779 -0
  73. package/src/assets/ethereum/hoodi/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +4 -0
  74. package/src/assets/ethereum/hoodi/liqEth/v1/DepositManager.sol/DepositManager.json +978 -0
  75. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  76. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IAccounting.json +1 -1
  77. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  78. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +39 -0
  79. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  80. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +64 -0
  81. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  82. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  83. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  84. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IRewardsERC20.json +1 -1
  85. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  86. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IRewardsERC20Pausable.json +1 -1
  87. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  88. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +344 -0
  89. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  90. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  91. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  92. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  93. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  94. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  95. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +4 -0
  96. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/RewardsERC20.sol/RewardsERC20Upgradeable.json +1 -1
  97. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +4 -0
  98. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +1 -1
  99. package/src/assets/ethereum/hoodi/liqEth/v1/accounting.sol/Accounting.dbg.json +4 -0
  100. package/src/assets/ethereum/hoodi/liqEth/v1/accounting.sol/Accounting.json +548 -0
  101. package/src/assets/ethereum/hoodi/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +4 -0
  102. package/src/assets/ethereum/hoodi/liqEth/v1/liqEth.sol/LiqEthToken.json +1233 -0
  103. package/src/assets/ethereum/hoodi/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +4 -0
  104. package/src/assets/ethereum/hoodi/liqEth/v1/stakingModule.sol/StakingModule.json +1772 -0
  105. package/src/assets/ethereum/hoodi/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
  106. package/src/assets/ethereum/{ABI → hoodi}/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +2 -2
  107. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
  108. package/src/assets/ethereum/{ABI → hoodi}/liqEth/withdrawalVault.sol/Uint64BE.json +2 -2
  109. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
  110. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/WithdrawalVault.json +441 -0
  111. package/src/assets/ethereum/hoodi/outpost/BAR.sol/BAR.dbg.json +4 -0
  112. package/src/assets/ethereum/hoodi/outpost/BAR.sol/BAR.json +1111 -0
  113. package/src/assets/ethereum/hoodi/outpost/Depositor.sol/Depositor.dbg.json +4 -0
  114. package/src/assets/ethereum/hoodi/outpost/Depositor.sol/Depositor.json +1696 -0
  115. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +4 -0
  116. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +4 -0
  117. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +274 -0
  118. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.dbg.json +4 -0
  119. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.json +10 -0
  120. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.dbg.json +4 -0
  121. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.json +10 -0
  122. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.dbg.json +4 -0
  123. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.json +10 -0
  124. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.dbg.json +4 -0
  125. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.json +10 -0
  126. package/src/assets/ethereum/hoodi/outpost/LiqEthBridge.sol/LiqEthBridge.dbg.json +4 -0
  127. package/src/assets/ethereum/hoodi/outpost/LiqEthBridge.sol/LiqEthBridge.json +1044 -0
  128. package/src/assets/ethereum/hoodi/outpost/OPP.sol/OPP.dbg.json +4 -0
  129. package/src/assets/ethereum/hoodi/outpost/OPP.sol/OPP.json +1055 -0
  130. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPP.dbg.json +4 -0
  131. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPP.json +81 -0
  132. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +4 -0
  133. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPInbound.dbg.json +4 -0
  134. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPInbound.json +330 -0
  135. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +4 -0
  136. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPReceiver.json +29 -0
  137. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPSender.dbg.json +4 -0
  138. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPSender.json +41 -0
  139. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/OPPCommon.dbg.json +4 -0
  140. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/OPPCommon.json +287 -0
  141. package/src/assets/ethereum/hoodi/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +4 -0
  142. package/src/assets/ethereum/hoodi/outpost/OPPEndpoint.sol/OPPEndpoint.json +294 -0
  143. package/src/assets/ethereum/hoodi/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +4 -0
  144. package/src/assets/ethereum/hoodi/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +415 -0
  145. package/src/assets/ethereum/hoodi/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +4 -0
  146. package/src/assets/ethereum/hoodi/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +399 -0
  147. package/src/assets/ethereum/hoodi/outpost/OPPErrors.sol/OPPErrors.dbg.json +4 -0
  148. package/src/assets/ethereum/hoodi/outpost/OPPErrors.sol/OPPErrors.json +245 -0
  149. package/src/assets/ethereum/hoodi/outpost/OPPInbound.sol/OPPInbound.dbg.json +4 -0
  150. package/src/assets/ethereum/hoodi/outpost/OPPInbound.sol/OPPInbound.json +1204 -0
  151. package/src/assets/ethereum/hoodi/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +4 -0
  152. package/src/assets/ethereum/hoodi/outpost/OPPReceiver.sol/OPPReceiver.json +312 -0
  153. package/src/assets/ethereum/hoodi/outpost/OPPSender.sol/OPPSender.dbg.json +4 -0
  154. package/src/assets/ethereum/hoodi/outpost/OPPSender.sol/OPPSender.json +324 -0
  155. package/src/assets/ethereum/hoodi/outpost/OperatorRegistry.sol/OperatorRegistry.dbg.json +4 -0
  156. package/src/assets/ethereum/hoodi/outpost/OperatorRegistry.sol/OperatorRegistry.json +1068 -0
  157. package/src/assets/ethereum/hoodi/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +4 -0
  158. package/src/assets/ethereum/hoodi/outpost/OutpostErrors.sol/OutpostErrors.json +211 -0
  159. package/src/assets/ethereum/hoodi/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +4 -0
  160. package/src/assets/ethereum/hoodi/outpost/OutpostManaged.sol/OutpostManaged.json +229 -0
  161. package/src/assets/ethereum/hoodi/outpost/OutpostManager.sol/OutpostManager.dbg.json +4 -0
  162. package/src/assets/ethereum/hoodi/outpost/OutpostManager.sol/OutpostManager.json +751 -0
  163. package/src/assets/ethereum/hoodi/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +4 -0
  164. package/src/assets/ethereum/hoodi/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +1432 -0
  165. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +4 -0
  166. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostManager.json +130 -0
  167. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +4 -0
  168. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +4 -0
  169. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +141 -0
  170. package/src/assets/ethereum/hoodi/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +4 -0
  171. package/src/assets/ethereum/hoodi/outpost/OutpostOwnable.sol/OutpostOwnable.json +213 -0
  172. package/src/assets/ethereum/hoodi/outpost/OutpostReserve.sol/OutpostReserve.dbg.json +4 -0
  173. package/src/assets/ethereum/hoodi/outpost/OutpostReserve.sol/OutpostReserve.json +888 -0
  174. package/src/assets/ethereum/hoodi/outpost/Pool.sol/Pool.dbg.json +4 -0
  175. package/src/assets/ethereum/hoodi/outpost/Pool.sol/Pool.json +659 -0
  176. package/src/assets/ethereum/hoodi/outpost/Pretoken.sol/Pretoken.dbg.json +4 -0
  177. package/src/assets/ethereum/hoodi/outpost/Pretoken.sol/Pretoken.json +1393 -0
  178. package/src/assets/ethereum/hoodi/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +4 -0
  179. package/src/assets/ethereum/hoodi/outpost/ReceiptNFT.sol/ReceiptNFT.json +1738 -0
  180. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.dbg.json +4 -0
  181. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.json +10 -0
  182. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.dbg.json +4 -0
  183. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.json +10 -0
  184. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.dbg.json +4 -0
  185. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.json +10 -0
  186. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.dbg.json +4 -0
  187. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.json +10 -0
  188. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.dbg.json +4 -0
  189. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.json +10 -0
  190. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.dbg.json +4 -0
  191. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.json +10 -0
  192. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.dbg.json +4 -0
  193. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.json +10 -0
  194. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.dbg.json +4 -0
  195. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.json +10 -0
  196. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.dbg.json +4 -0
  197. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.json +10 -0
  198. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.dbg.json +4 -0
  199. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.json +10 -0
  200. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.dbg.json +4 -0
  201. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.json +1437 -0
  202. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.dbg.json +4 -0
  203. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.json +10 -0
  204. package/src/assets/ethereum/hoodi/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +4 -0
  205. package/src/assets/ethereum/hoodi/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +4 -0
  206. package/src/assets/ethereum/hoodi/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +4 -0
  207. package/src/assets/ethereum/hoodi/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +4 -0
  208. package/src/assets/ethereum/hoodi/token/ERC1155Token.sol/ERC1155Token.dbg.json +4 -0
  209. package/src/assets/ethereum/hoodi/token/ERC1155Token.sol/ERC1155Token.json +472 -0
  210. package/src/assets/ethereum/hoodi/token/ERC20Token.sol/ERC20Token.dbg.json +4 -0
  211. package/src/assets/ethereum/hoodi/token/ERC20Token.sol/ERC20Token.json +330 -0
  212. package/src/assets/ethereum/hoodi/token/ERC721Token.sol/ERC721Token.dbg.json +4 -0
  213. package/src/assets/ethereum/hoodi/token/ERC721Token.sol/ERC721Token.json +449 -0
  214. package/src/assets/ethereum/hoodi/token/Eman1155.sol/Eman1155.dbg.json +4 -0
  215. package/src/assets/ethereum/hoodi/token/Eman1155.sol/Eman1155.json +560 -0
  216. package/src/assets/ethereum/hoodi/token/Eman20.sol/Eman20.dbg.json +4 -0
  217. package/src/assets/ethereum/hoodi/token/Eman20.sol/Eman20.json +460 -0
  218. package/src/assets/ethereum/hoodi/token/Eman721.sol/Eman721.dbg.json +4 -0
  219. package/src/assets/ethereum/hoodi/token/Eman721.sol/Eman721.json +624 -0
  220. package/src/assets/ethereum/mainnet/common/Base58.sol/Base58.dbg.json +4 -0
  221. package/src/assets/ethereum/mainnet/common/Base58.sol/Base58.json +164 -0
  222. package/src/assets/ethereum/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.dbg.json +4 -0
  223. package/src/assets/ethereum/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.json +76 -0
  224. package/src/assets/ethereum/mainnet/common/RestrictedCallers.sol/RestrictedCallers.dbg.json +4 -0
  225. package/src/assets/ethereum/mainnet/common/RestrictedCallers.sol/RestrictedCallers.json +10 -0
  226. package/src/assets/ethereum/mainnet/common/iodata.sol/iodata.dbg.json +4 -0
  227. package/src/assets/ethereum/mainnet/common/iodata.sol/iodata.json +618 -0
  228. package/src/assets/ethereum/mainnet/common/iodata_util.sol/iodata_util.dbg.json +4 -0
  229. package/src/assets/ethereum/mainnet/common/iodata_util.sol/iodata_util.json +40 -0
  230. package/src/assets/ethereum/mainnet/common/sysio_data.sol/sysio_data.dbg.json +4 -0
  231. package/src/assets/ethereum/mainnet/common/sysio_data.sol/sysio_data.json +10 -0
  232. package/src/assets/ethereum/mainnet/common/sysio_errors.sol/sysio_errors.dbg.json +4 -0
  233. package/src/assets/ethereum/mainnet/common/sysio_errors.sol/sysio_errors.json +10 -0
  234. package/src/assets/ethereum/mainnet/common/sysio_merkle.sol/sysio_merkle.dbg.json +4 -0
  235. package/src/assets/ethereum/mainnet/common/sysio_merkle.sol/sysio_merkle.json +233 -0
  236. package/src/assets/ethereum/mainnet/common/sysio_name.sol/sysio_name.dbg.json +4 -0
  237. package/src/assets/ethereum/mainnet/common/sysio_name.sol/sysio_name.json +49 -0
  238. package/src/assets/ethereum/mainnet/common/sysio_pubkey.sol/sysio_pubkey.dbg.json +4 -0
  239. package/src/assets/ethereum/mainnet/common/sysio_pubkey.sol/sysio_pubkey.json +64 -0
  240. package/src/assets/ethereum/mainnet/common/sysio_read.sol/sysio_read.dbg.json +4 -0
  241. package/src/assets/ethereum/mainnet/common/sysio_read.sol/sysio_read.json +1458 -0
  242. package/src/assets/ethereum/mainnet/common/sysio_tester.sol/SysioTester.dbg.json +4 -0
  243. package/src/assets/ethereum/mainnet/common/sysio_tester.sol/SysioTester.json +1532 -0
  244. package/src/assets/ethereum/mainnet/common/sysio_verify.sol/sysio_verify.dbg.json +4 -0
  245. package/src/assets/ethereum/mainnet/common/sysio_verify.sol/sysio_verify.json +1525 -0
  246. package/src/assets/ethereum/mainnet/common/sysio_write.sol/sysio_write.dbg.json +4 -0
  247. package/src/assets/ethereum/mainnet/common/sysio_write.sol/sysio_write.json +1076 -0
  248. package/src/assets/ethereum/mainnet/liqEth/BeaconState.sol/BeaconState.dbg.json +4 -0
  249. package/src/assets/ethereum/mainnet/liqEth/BeaconState.sol/BeaconState.json +807 -0
  250. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/DepositManagerV2.dbg.json +4 -0
  251. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/DepositManagerV2.json +1004 -0
  252. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.dbg.json +4 -0
  253. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.json +29 -0
  254. package/src/assets/ethereum/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.dbg.json +4 -0
  255. package/src/assets/ethereum/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.json +897 -0
  256. package/src/assets/ethereum/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +4 -0
  257. package/src/assets/ethereum/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +1289 -0
  258. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  259. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.json +39 -0
  260. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  261. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.json +64 -0
  262. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.dbg.json +4 -0
  263. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.json +189 -0
  264. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  265. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  266. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  267. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.json +319 -0
  268. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  269. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +333 -0
  270. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  271. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.json +279 -0
  272. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  273. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  274. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  275. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  276. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  277. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  278. package/src/assets/ethereum/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +4 -0
  279. package/src/assets/ethereum/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +236 -0
  280. package/src/assets/ethereum/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +4 -0
  281. package/src/assets/ethereum/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.json +229 -0
  282. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +4 -0
  283. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +957 -0
  284. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +4 -0
  285. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +1020 -0
  286. package/src/assets/ethereum/mainnet/liqEth/StakingLib.sol/StakingLib.dbg.json +4 -0
  287. package/src/assets/ethereum/mainnet/liqEth/StakingLib.sol/StakingLib.json +89 -0
  288. package/src/assets/ethereum/mainnet/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
  289. package/src/assets/ethereum/mainnet/liqEth/Yield.sol/YieldOracle.json +1376 -0
  290. package/src/assets/ethereum/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +4 -0
  291. package/src/assets/ethereum/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.json +1323 -0
  292. package/src/assets/ethereum/mainnet/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +4 -0
  293. package/src/assets/ethereum/mainnet/liqEth/stakingModule.sol/StakingModuleV2.json +1896 -0
  294. package/src/assets/ethereum/mainnet/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +4 -0
  295. package/src/assets/ethereum/mainnet/liqEth/v1/DepositManager.sol/DepositManager.json +978 -0
  296. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  297. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.json +176 -0
  298. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  299. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +39 -0
  300. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  301. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +64 -0
  302. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  303. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  304. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  305. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.json +249 -0
  306. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  307. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.json +263 -0
  308. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  309. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +344 -0
  310. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  311. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  312. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  313. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  314. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  315. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  316. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +4 -0
  317. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.json +874 -0
  318. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +4 -0
  319. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +937 -0
  320. package/src/assets/ethereum/mainnet/liqEth/v1/accounting.sol/Accounting.dbg.json +4 -0
  321. package/src/assets/ethereum/mainnet/liqEth/v1/accounting.sol/Accounting.json +542 -0
  322. package/src/assets/ethereum/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +4 -0
  323. package/src/assets/ethereum/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.json +1233 -0
  324. package/src/assets/ethereum/mainnet/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +4 -0
  325. package/src/assets/ethereum/mainnet/liqEth/v1/stakingModule.sol/StakingModule.json +1772 -0
  326. package/src/assets/ethereum/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
  327. package/src/assets/ethereum/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +973 -0
  328. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
  329. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/Uint64BE.json +10 -0
  330. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
  331. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.json +441 -0
  332. package/src/assets/ethereum/mainnet/outpost/BAR.sol/BARV2.dbg.json +4 -0
  333. package/src/assets/ethereum/mainnet/outpost/BAR.sol/BARV2.json +1915 -0
  334. package/src/assets/ethereum/mainnet/outpost/Depositor.sol/DepositorV2.dbg.json +4 -0
  335. package/src/assets/ethereum/mainnet/outpost/Depositor.sol/DepositorV2.json +1845 -0
  336. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +4 -0
  337. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +122 -0
  338. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +4 -0
  339. package/src/assets/ethereum/{ABI → mainnet}/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +31 -29
  340. package/src/assets/ethereum/mainnet/outpost/OPP.sol/OPP.dbg.json +4 -0
  341. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPP.dbg.json +4 -0
  342. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +4 -0
  343. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.json +29 -0
  344. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPInbound.dbg.json +4 -0
  345. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +4 -0
  346. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPSender.dbg.json +4 -0
  347. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/OPPCommon.dbg.json +4 -0
  348. package/src/assets/ethereum/mainnet/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +4 -0
  349. package/src/assets/ethereum/mainnet/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +4 -0
  350. package/src/assets/ethereum/mainnet/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +4 -0
  351. package/src/assets/ethereum/mainnet/outpost/OPPErrors.sol/OPPErrors.dbg.json +4 -0
  352. package/src/assets/ethereum/mainnet/outpost/OPPInbound.sol/OPPInbound.dbg.json +4 -0
  353. package/src/assets/ethereum/mainnet/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +4 -0
  354. package/src/assets/ethereum/mainnet/outpost/OPPSender.sol/OPPSender.dbg.json +4 -0
  355. package/src/assets/ethereum/mainnet/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +4 -0
  356. package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostErrors.sol/OutpostErrors.json +33 -18
  357. package/src/assets/ethereum/mainnet/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +4 -0
  358. package/src/assets/ethereum/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.dbg.json +4 -0
  359. package/src/assets/ethereum/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.json +737 -0
  360. package/src/assets/ethereum/mainnet/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +4 -0
  361. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +4 -0
  362. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +4 -0
  363. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +29 -0
  364. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +4 -0
  365. package/src/assets/ethereum/mainnet/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +4 -0
  366. package/src/assets/ethereum/mainnet/outpost/Pool.sol/PoolV2.dbg.json +4 -0
  367. package/src/assets/ethereum/mainnet/outpost/Pool.sol/PoolV2.json +943 -0
  368. package/src/assets/ethereum/mainnet/outpost/Pretoken.sol/PretokenV2.dbg.json +4 -0
  369. package/src/assets/ethereum/mainnet/outpost/Pretoken.sol/PretokenV2.json +1703 -0
  370. package/src/assets/ethereum/mainnet/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +4 -0
  371. package/src/assets/ethereum/{ABI → mainnet}/outpost/ReceiptNFT.sol/ReceiptNFT.json +33 -18
  372. package/src/assets/ethereum/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +4 -0
  373. package/src/assets/ethereum/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.json +29 -0
  374. package/src/assets/ethereum/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +4 -0
  375. package/src/assets/ethereum/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.json +29 -0
  376. package/src/assets/ethereum/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +4 -0
  377. package/src/assets/ethereum/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +858 -0
  378. package/src/assets/ethereum/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +4 -0
  379. package/src/assets/ethereum/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +30 -0
  380. package/src/assets/ethereum/mainnet/outpost/v1/BAR.sol/BAR.dbg.json +4 -0
  381. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/BAR.sol/BAR.json +34 -19
  382. package/src/assets/ethereum/mainnet/outpost/v1/Depositor.sol/Depositor.dbg.json +4 -0
  383. package/src/assets/ethereum/mainnet/outpost/v1/Depositor.sol/Depositor.json +1653 -0
  384. package/src/assets/ethereum/mainnet/outpost/v1/OutpostManager.sol/OutpostManager.dbg.json +4 -0
  385. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/OutpostManager.sol/OutpostManager.json +3 -3
  386. package/src/assets/ethereum/mainnet/outpost/v1/Pool.sol/Pool.dbg.json +4 -0
  387. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/Pool.sol/Pool.json +34 -19
  388. package/src/assets/ethereum/mainnet/outpost/v1/Pretoken.sol/Pretoken.dbg.json +4 -0
  389. package/src/assets/ethereum/mainnet/outpost/v1/Pretoken.sol/Pretoken.json +1665 -0
  390. package/src/assets/ethereum/mainnet/token/ERC1155Token.sol/ERC1155Token.dbg.json +4 -0
  391. package/src/assets/ethereum/mainnet/token/ERC1155Token.sol/ERC1155Token.json +472 -0
  392. package/src/assets/ethereum/mainnet/token/ERC20Token.sol/ERC20Token.dbg.json +4 -0
  393. package/src/assets/ethereum/mainnet/token/ERC20Token.sol/ERC20Token.json +330 -0
  394. package/src/assets/ethereum/mainnet/token/ERC721Token.sol/ERC721Token.dbg.json +4 -0
  395. package/src/assets/ethereum/mainnet/token/ERC721Token.sol/ERC721Token.json +449 -0
  396. package/src/assets/solana/devnet/idl/liqsol_core.json +8566 -0
  397. package/src/assets/solana/{idl → devnet/idl}/liqsol_token.json +35 -1
  398. package/src/assets/solana/devnet/idl/transfer_hook.json +490 -0
  399. package/src/assets/solana/{idl → devnet/idl}/validator_leaderboard.json +19 -1
  400. package/src/assets/solana/devnet/types/liqsol_core.ts +8572 -0
  401. package/src/assets/solana/{types → devnet/types}/liqsol_token.ts +35 -1
  402. package/src/assets/solana/devnet/types/transfer_hook.ts +496 -0
  403. package/src/assets/solana/{types → devnet/types}/validator_leaderboard.ts +19 -1
  404. package/src/assets/solana/{idl → mainnet/idl}/liqsol_core.json +1466 -657
  405. package/src/assets/solana/mainnet/idl/liqsol_token.json +217 -0
  406. package/src/assets/solana/mainnet/idl/transfer_hook.json +479 -0
  407. package/src/assets/solana/mainnet/idl/validator_leaderboard.json +574 -0
  408. package/src/assets/solana/{types → mainnet/types}/liqsol_core.ts +1466 -657
  409. package/src/assets/solana/mainnet/types/liqsol_token.ts +223 -0
  410. package/src/assets/solana/mainnet/types/transfer_hook.ts +485 -0
  411. package/src/assets/solana/mainnet/types/validator_leaderboard.ts +580 -0
  412. package/src/assets/solana/realdevnet/idl/liqsol_core.json +7112 -0
  413. package/src/assets/solana/realdevnet/idl/liqsol_token.json +217 -0
  414. package/src/assets/solana/realdevnet/idl/transfer_hook.json +479 -0
  415. package/src/assets/solana/realdevnet/idl/validator_leaderboard.json +735 -0
  416. package/src/assets/solana/realdevnet/types/liqsol_core.ts +7118 -0
  417. package/src/assets/solana/realdevnet/types/liqsol_token.ts +223 -0
  418. package/src/assets/solana/realdevnet/types/transfer_hook.ts +485 -0
  419. package/src/assets/solana/realdevnet/types/validator_leaderboard.ts +741 -0
  420. package/src/index.ts +2 -2
  421. package/src/networks/ethereum/clients/convert.client.ts +32 -3
  422. package/src/networks/ethereum/clients/opp.client.ts +20 -21
  423. package/src/networks/ethereum/clients/pretoken.client.ts +8 -9
  424. package/src/networks/ethereum/clients/receipt.client.ts +93 -23
  425. package/src/networks/ethereum/clients/stake.client.ts +86 -14
  426. package/src/networks/ethereum/clients/validator.client.ts +61 -0
  427. package/src/networks/ethereum/contract.ts +425 -153
  428. package/src/networks/ethereum/ethereum.ts +378 -163
  429. package/src/networks/ethereum/types.ts +65 -28
  430. package/src/networks/ethereum/utils.ts +104 -72
  431. package/src/networks/solana/clients/convert.client.ts +341 -0
  432. package/src/networks/solana/clients/distribution.client.ts +245 -20
  433. package/src/networks/solana/clients/leaderboard.client.ts +10 -13
  434. package/src/networks/solana/clients/outpost.client.ts +93 -55
  435. package/src/networks/solana/clients/token.client.ts +20 -15
  436. package/src/networks/solana/constants.ts +59 -277
  437. package/src/networks/solana/program.ts +446 -28
  438. package/src/networks/solana/solana.ts +917 -281
  439. package/src/networks/solana/types.ts +173 -24
  440. package/src/networks/solana/utils.ts +125 -339
  441. package/src/staker.ts +25 -4
  442. package/src/types.ts +113 -27
  443. package/src/assets/ethereum/ABI/liqEth/BeaconState.sol/BeaconState.dbg.json +0 -4
  444. package/src/assets/ethereum/ABI/liqEth/DepositManager.sol/DepositManager.dbg.json +0 -4
  445. package/src/assets/ethereum/ABI/liqEth/DepositManager.sol/DepositManager.json +0 -952
  446. package/src/assets/ethereum/ABI/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +0 -4
  447. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +0 -4
  448. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +0 -4
  449. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +0 -4
  450. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +0 -4
  451. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +0 -4
  452. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +0 -4
  453. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +0 -4
  454. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +0 -4
  455. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +0 -4
  456. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +0 -4
  457. package/src/assets/ethereum/ABI/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +0 -4
  458. package/src/assets/ethereum/ABI/liqEth/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +0 -4
  459. package/src/assets/ethereum/ABI/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +0 -4
  460. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/BeaconRoots.dbg.json +0 -4
  461. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/BeaconRoots.json +0 -10
  462. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZ.dbg.json +0 -4
  463. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZ.json +0 -10
  464. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZExtras.dbg.json +0 -4
  465. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZExtras.json +0 -10
  466. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZVec48.dbg.json +0 -4
  467. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZVec48.json +0 -10
  468. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/ValidatorBalanceVerifier.dbg.json +0 -4
  469. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/ValidatorBalanceVerifier.json +0 -291
  470. package/src/assets/ethereum/ABI/liqEth/Yield.sol/YieldOracle.dbg.json +0 -4
  471. package/src/assets/ethereum/ABI/liqEth/accounting.sol/Accounting.dbg.json +0 -4
  472. package/src/assets/ethereum/ABI/liqEth/accounting.sol/Accounting.json +0 -555
  473. package/src/assets/ethereum/ABI/liqEth/liqEth.sol/LiqEthToken.dbg.json +0 -4
  474. package/src/assets/ethereum/ABI/liqEth/liqEth.sol/LiqEthToken.json +0 -1202
  475. package/src/assets/ethereum/ABI/liqEth/stakingModule.sol/StakingModule.dbg.json +0 -4
  476. package/src/assets/ethereum/ABI/liqEth/stakingModule.sol/StakingModule.json +0 -1791
  477. package/src/assets/ethereum/ABI/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +0 -4
  478. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +0 -4
  479. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +0 -4
  480. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/WithdrawalVault.json +0 -460
  481. package/src/assets/ethereum/ABI/outpost/Aggregator.sol/Aggregator.json +0 -82
  482. package/src/assets/ethereum/ABI/outpost/BAR.sol/BAR.dbg.json +0 -4
  483. package/src/assets/ethereum/ABI/outpost/Depositor.sol/Depositor.dbg.json +0 -4
  484. package/src/assets/ethereum/ABI/outpost/Depositor.sol/Depositor.json +0 -1638
  485. package/src/assets/ethereum/ABI/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +0 -4
  486. package/src/assets/ethereum/ABI/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +0 -4
  487. package/src/assets/ethereum/ABI/outpost/OPP.sol/OPP.dbg.json +0 -4
  488. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPP.dbg.json +0 -4
  489. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +0 -4
  490. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPInbound.dbg.json +0 -4
  491. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +0 -4
  492. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPSender.dbg.json +0 -4
  493. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/OPPCommon.dbg.json +0 -4
  494. package/src/assets/ethereum/ABI/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +0 -4
  495. package/src/assets/ethereum/ABI/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +0 -4
  496. package/src/assets/ethereum/ABI/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +0 -4
  497. package/src/assets/ethereum/ABI/outpost/OPPErrors.sol/OPPErrors.dbg.json +0 -4
  498. package/src/assets/ethereum/ABI/outpost/OPPInbound.sol/OPPInbound.dbg.json +0 -4
  499. package/src/assets/ethereum/ABI/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +0 -4
  500. package/src/assets/ethereum/ABI/outpost/OPPSender.sol/OPPSender.dbg.json +0 -4
  501. package/src/assets/ethereum/ABI/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +0 -4
  502. package/src/assets/ethereum/ABI/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +0 -4
  503. package/src/assets/ethereum/ABI/outpost/OutpostManager.sol/OutpostManager.dbg.json +0 -4
  504. package/src/assets/ethereum/ABI/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +0 -4
  505. package/src/assets/ethereum/ABI/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +0 -4
  506. package/src/assets/ethereum/ABI/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +0 -4
  507. package/src/assets/ethereum/ABI/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +0 -4
  508. package/src/assets/ethereum/ABI/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +0 -4
  509. package/src/assets/ethereum/ABI/outpost/Pool.sol/Pool.dbg.json +0 -4
  510. package/src/assets/ethereum/ABI/outpost/Pretoken.sol/Pretoken.dbg.json +0 -4
  511. package/src/assets/ethereum/ABI/outpost/Pretoken.sol/Pretoken.json +0 -1650
  512. package/src/assets/ethereum/ABI/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +0 -4
  513. package/src/assets/ethereum/ABI/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +0 -4
  514. package/src/assets/ethereum/ABI/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +0 -4
  515. package/src/assets/ethereum/ABI/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +0 -4
  516. package/src/assets/ethereum/ABI/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +0 -4
  517. package/src/assets/ethereum/ABI/token/ERC1155Token.sol/ERC1155Token.dbg.json +0 -4
  518. package/src/assets/ethereum/ABI/token/ERC1155Token.sol/ERC1155Token.json +0 -472
  519. package/src/assets/ethereum/ABI/token/ERC20Token.sol/ERC20Token.dbg.json +0 -4
  520. package/src/assets/ethereum/ABI/token/ERC20Token.sol/ERC20Token.json +0 -330
  521. package/src/assets/ethereum/ABI/token/ERC721Token.sol/ERC721Token.dbg.json +0 -4
  522. package/src/assets/ethereum/ABI/token/ERC721Token.sol/ERC721Token.json +0 -449
  523. package/src/assets/solana/idl/transfer_hook.json +0 -192
  524. package/src/assets/solana/types/transfer_hook.ts +0 -198
  525. package/src/networks/solana/clients/deposit.client.ts +0 -273
  526. package/src/staker/types.ts +0 -62
  527. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/BeaconState.sol/BeaconState.json +0 -0
  528. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +0 -0
  529. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IDepositContract.json +0 -0
  530. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IDepositManager.json +0 -0
  531. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +0 -0
  532. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +0 -0
  533. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +0 -0
  534. /package/src/assets/ethereum/{ABI → hoodi}/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +0 -0
  535. /package/src/assets/ethereum/{ABI → hoodi}/outpost/OPPCommon.sol/IOPPEndpoint.json +0 -0
  536. /package/src/assets/ethereum/{ABI → hoodi}/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +0 -0
  537. /package/src/assets/ethereum/{ABI → hoodi}/outpost/interfaces/IPretoken.sol/IPretoken.json +0 -0
  538. /package/src/assets/ethereum/{ABI → hoodi}/outpost/interfaces/IWarrant.sol/IWarrant.json +0 -0
  539. /package/src/assets/ethereum/{ABI → hoodi}/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +0 -0
  540. /package/src/assets/ethereum/{ABI → hoodi}/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +0 -0
  541. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPP.sol/OPP.json +0 -0
  542. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPP.json +0 -0
  543. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPInbound.json +0 -0
  544. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPReceiver.json +0 -0
  545. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPSender.json +0 -0
  546. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/OPPCommon.json +0 -0
  547. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpoint.sol/OPPEndpoint.json +0 -0
  548. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +0 -0
  549. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +0 -0
  550. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPErrors.sol/OPPErrors.json +0 -0
  551. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPInbound.sol/OPPInbound.json +0 -0
  552. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPReceiver.sol/OPPReceiver.json +0 -0
  553. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPSender.sol/OPPSender.json +0 -0
  554. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManaged.sol/OutpostManaged.json +0 -0
  555. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +0 -0
  556. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/IOutpostManager.json +0 -0
  557. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +0 -0
  558. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostOwnable.sol/OutpostOwnable.json +0 -0
@@ -0,0 +1,341 @@
1
+ import { AnchorProvider, BN, Program } from '@coral-xyz/anchor';
2
+ import {
3
+ SystemProgram,
4
+ TransactionInstruction,
5
+ StakeProgram,
6
+ SYSVAR_INSTRUCTIONS_PUBKEY,
7
+ SYSVAR_CLOCK_PUBKEY,
8
+ SYSVAR_RENT_PUBKEY,
9
+ SYSVAR_STAKE_HISTORY_PUBKEY,
10
+ Connection,
11
+ PublicKey,
12
+ } from '@solana/web3.js';
13
+
14
+ import {
15
+ TOKEN_2022_PROGRAM_ID,
16
+ ASSOCIATED_TOKEN_PROGRAM_ID,
17
+ getAssociatedTokenAddressSync,
18
+ } from '@solana/spl-token';
19
+
20
+ import { LiqsolCoreClientIdl, SolanaProgramService } from '../program';
21
+ import { GlobalAccount, ReceiptData, WalletLike } from '../types';
22
+ import { BalanceView, WithdrawReceipt } from '../../../types';
23
+ import { normalizeToBigInt } from '../utils';
24
+
25
+ /**
26
+ * ConvertClient (Solana):
27
+ * - deposit SOL -> liqSOL
28
+ * - request withdraw (liqSOL burn -> NFT receipt)
29
+ * - list withdrawal receipts owned by a user
30
+ * - build claim_withdraw instruction
31
+ */
32
+ export class ConvertClient {
33
+ private program: Program<LiqsolCoreClientIdl>;
34
+
35
+ get connection(): Connection {
36
+ return this.provider.connection;
37
+ }
38
+
39
+ get wallet(): WalletLike {
40
+ return this.provider.wallet;
41
+ }
42
+
43
+ constructor(
44
+ private readonly provider: AnchorProvider,
45
+ private readonly pgs: SolanaProgramService,
46
+ ) {
47
+ this.program = pgs.getProgram('liqsolCore');
48
+ }
49
+
50
+ /**
51
+ * Build a deposit instruction (SOL -> liqSOL).
52
+ */
53
+ async buildDepositTx(
54
+ amount: bigint,
55
+ user = this.wallet.publicKey,
56
+ ): Promise<TransactionInstruction> {
57
+ if (!user) throw new Error('ConvertClient.buildDepositTx: wallet not connected');
58
+ if (!amount || amount <= BigInt(0))
59
+ throw new Error('ConvertClient.buildDepositTx: amount must be greater than zero.');
60
+
61
+ const depositAuthority = this.pgs.deriveDepositAuthorityPda();
62
+ const liqsolMint = this.pgs.deriveLiqsolMintPda();
63
+ const liqsolMintAuthority = this.pgs.deriveLiqsolMintAuthorityPda();
64
+ const reservePool = this.pgs.deriveReservePoolPda();
65
+ const vault = this.pgs.deriveVaultPda();
66
+ const controllerState = this.pgs.deriveStakeControllerStatePda();
67
+ const payoutState = this.pgs.derivePayoutStatePda();
68
+ const bucketAuthority = this.pgs.deriveBucketAuthorityPda();
69
+ const payRateHistory = this.pgs.derivePayRateHistoryPda();
70
+ const globalConfig = this.pgs.deriveGlobalConfigPda();
71
+
72
+ const userAta = getAssociatedTokenAddressSync(liqsolMint, user, true, TOKEN_2022_PROGRAM_ID);
73
+ const distributionState = this.pgs.deriveDistributionStatePda();
74
+ const userRecord = this.pgs.deriveUserRecordPda(userAta);
75
+ const bucketTokenAccount = getAssociatedTokenAddressSync(
76
+ liqsolMint,
77
+ bucketAuthority,
78
+ true,
79
+ TOKEN_2022_PROGRAM_ID,
80
+ );
81
+
82
+ const seed = Math.floor(Math.random() * 2 ** 32);
83
+ const ephemeralStake = await this.pgs.deriveEphemeralStakeAddress(user, seed);
84
+
85
+ return await this.program.methods
86
+ .deposit(new BN(amount.toString()), seed)
87
+ .accounts({
88
+ user,
89
+ depositAuthority,
90
+ systemProgram: SystemProgram.programId,
91
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
92
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
93
+ liqsolProgram: this.pgs.PROGRAM_IDS.LIQSOL_TOKEN,
94
+ stakeProgram: StakeProgram.programId,
95
+ liqsolMint,
96
+ userAta,
97
+ liqsolMintAuthority,
98
+ reservePool,
99
+ vault,
100
+ ephemeralStake,
101
+ controllerState,
102
+ payoutState,
103
+ bucketAuthority,
104
+ bucketTokenAccount,
105
+ userRecord,
106
+ distributionState,
107
+ payRateHistory,
108
+ instructionsSysvar: SYSVAR_INSTRUCTIONS_PUBKEY,
109
+ clock: SYSVAR_CLOCK_PUBKEY,
110
+ stakeHistory: SYSVAR_STAKE_HISTORY_PUBKEY,
111
+ rent: SYSVAR_RENT_PUBKEY,
112
+ globalConfig,
113
+ })
114
+ .instruction();
115
+ }
116
+
117
+ /**
118
+ * Build a withdraw-request instruction (liqSOL burn -> NFT receipt).
119
+ */
120
+ async buildWithdrawTx(
121
+ amount: bigint,
122
+ user = this.wallet.publicKey,
123
+ ): Promise<TransactionInstruction> {
124
+ if (!user) throw new Error('ConvertClient.buildWithdrawTx: wallet not connected');
125
+ if (!amount || amount <= BigInt(0))
126
+ throw new Error('ConvertClient.buildWithdrawTx: amount must be greater than zero.');
127
+
128
+ const liqsolMint = this.pgs.deriveLiqsolMintPda();
129
+ const userAta = getAssociatedTokenAddressSync(liqsolMint, user, true, TOKEN_2022_PROGRAM_ID);
130
+ const userRecord = this.pgs.deriveUserRecordPda(userAta);
131
+ const distributionState = this.pgs.deriveDistributionStatePda();
132
+
133
+ const global = this.pgs.deriveWithdrawGlobalPda();
134
+ const reservePool = this.pgs.deriveReservePoolPda();
135
+ const stakeAllocationState = this.pgs.deriveStakeAllocationStatePda();
136
+ const stakeMetrics = this.pgs.deriveStakeMetricsPda();
137
+ const maintenanceLedger = this.pgs.deriveMaintenanceLedgerPda();
138
+ const globalConfig = this.pgs.deriveGlobalConfigPda();
139
+
140
+ const globalAcct: GlobalAccount = await this.program.account.global.fetch(global);
141
+ const rawId = globalAcct.nextReceiptId;
142
+ const receiptId = normalizeToBigInt(rawId);
143
+
144
+ const mintAuthority = this.pgs.deriveWithdrawMintAuthorityPda();
145
+ const metadata = this.pgs.deriveWithdrawMintMetadataPda();
146
+ const nftMint = this.pgs.deriveWithdrawNftMintPda(receiptId);
147
+ const receiptData = this.pgs.deriveLiqReceiptDataPda(nftMint);
148
+ const owner = user;
149
+ const nftAta = getAssociatedTokenAddressSync(nftMint, owner, true, TOKEN_2022_PROGRAM_ID);
150
+
151
+ const bucketAuthority = this.pgs.deriveBucketAuthorityPda();
152
+ const bucketTokenAccount = getAssociatedTokenAddressSync(
153
+ liqsolMint,
154
+ bucketAuthority,
155
+ true,
156
+ TOKEN_2022_PROGRAM_ID,
157
+ );
158
+
159
+ return await this.program.methods
160
+ .requestWithdraw(new BN(amount.toString()))
161
+ .accounts({
162
+ user,
163
+ owner,
164
+ global,
165
+ liqsolMint,
166
+ userAta,
167
+ userRecord,
168
+ reservePool,
169
+ stakeAllocationState,
170
+ stakeMetrics,
171
+ maintenanceLedger,
172
+ clock: SYSVAR_CLOCK_PUBKEY,
173
+ mintAuthority,
174
+ receiptData,
175
+ metadata,
176
+ nftMint,
177
+ nftAta,
178
+ distributionState,
179
+ bucketTokenAccount,
180
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
181
+ tokenInterface: TOKEN_2022_PROGRAM_ID,
182
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
183
+ systemProgram: SystemProgram.programId,
184
+ rent: SYSVAR_RENT_PUBKEY,
185
+ globalConfig,
186
+ })
187
+ .instruction();
188
+ }
189
+
190
+ /**
191
+ * Enumerate withdrawal receipt NFTs owned by `owner`.
192
+ */
193
+ async fetchWithdrawReceipts(owner: PublicKey): Promise<WithdrawReceipt[]> {
194
+ const globalPda = this.pgs.deriveWithdrawGlobalPda();
195
+ const globalAcct: GlobalAccount = await this.program.account.global.fetch(globalPda);
196
+ const nextId = normalizeToBigInt(globalAcct.nextReceiptId);
197
+
198
+ const mintToId = new Map<string, bigint>();
199
+ for (let i = BigInt(0); i < nextId; i++) {
200
+ const mint = this.pgs.deriveWithdrawNftMintPda(i);
201
+ mintToId.set(mint.toBase58(), i);
202
+ }
203
+
204
+ const tokenAccounts = await this.connection.getParsedTokenAccountsByOwner(owner, {
205
+ programId: TOKEN_2022_PROGRAM_ID,
206
+ });
207
+
208
+ const receipts: WithdrawReceipt[] = [];
209
+
210
+ for (const { pubkey, account } of tokenAccounts.value) {
211
+ const info: any = account.data?.['parsed']?.info;
212
+ if (!info) continue;
213
+ const amount = info.tokenAmount;
214
+ const decimals = Number(amount?.decimals ?? 0);
215
+ const uiAmount = Number(amount?.uiAmount ?? 0);
216
+ if (decimals !== 0 || uiAmount !== 1) continue;
217
+
218
+ const mintStr: string | undefined = info.mint;
219
+ if (!mintStr) continue;
220
+ const receiptId = mintToId.get(mintStr);
221
+ if (receiptId === undefined) continue;
222
+
223
+ const mintKey = new PublicKey(mintStr);
224
+ const receiptDataPda = this.pgs.deriveLiqReceiptDataPda(mintKey);
225
+
226
+ let receiptData: ReceiptData;
227
+ try {
228
+ const raw = await this.program.account.liqReceiptData.fetch(receiptDataPda);
229
+ receiptData = {
230
+ receiptId: normalizeToBigInt(raw.receiptId),
231
+ liqports: normalizeToBigInt(raw.liqports),
232
+ epoch: normalizeToBigInt(raw.epoch),
233
+ fulfilled: Boolean(raw.fulfilled),
234
+ };
235
+ } catch (err) {
236
+ console.warn(`ConvertClient: failed to fetch receipt data for mint ${mintStr}`, err);
237
+ continue;
238
+ }
239
+
240
+ const { etaMs, readyAtMs } = await this.estimateEpochEta(receiptData.epoch);
241
+ const status = receiptData.fulfilled ? 'claimed' : etaMs <= 0 ? 'ready' : 'queued';
242
+
243
+ const amountView: BalanceView = {
244
+ amount: receiptData.liqports,
245
+ decimals: 9,
246
+ symbol: 'SOL',
247
+ };
248
+
249
+ receipts.push({
250
+ tokenId: receiptData.receiptId,
251
+ receipt: {
252
+ amount: amountView,
253
+ readyAt: readyAtMs,
254
+ chain: 'SOL',
255
+ epoch: receiptData.epoch,
256
+ status,
257
+ mint: mintKey.toBase58(),
258
+ ownerAta: pubkey.toBase58(),
259
+ },
260
+ });
261
+ }
262
+
263
+ return receipts;
264
+ }
265
+
266
+ /**
267
+ * Build the claim_withdraw instruction for a given receiptId.
268
+ */
269
+ async buildClaimWithdrawTx(
270
+ receiptId: bigint,
271
+ user: PublicKey,
272
+ ): Promise<TransactionInstruction> {
273
+ const mintAccount = this.pgs.deriveWithdrawNftMintPda(receiptId);
274
+ const receiptData = this.pgs.deriveLiqReceiptDataPda(mintAccount);
275
+ const ownerAta = getAssociatedTokenAddressSync(
276
+ mintAccount,
277
+ user,
278
+ true,
279
+ TOKEN_2022_PROGRAM_ID,
280
+ );
281
+
282
+ const accounts = {
283
+ user,
284
+ global: this.pgs.deriveWithdrawGlobalPda(),
285
+ mintAuthority: this.pgs.deriveWithdrawMintAuthorityPda(),
286
+ receiptData,
287
+ mintAccount,
288
+ ownerAta,
289
+ reservePool: this.pgs.deriveReservePoolPda(),
290
+ vault: this.pgs.deriveVaultPda(),
291
+ clock: SYSVAR_CLOCK_PUBKEY,
292
+ stakeHistory: SYSVAR_STAKE_HISTORY_PUBKEY,
293
+ globalConfig: this.pgs.deriveGlobalConfigPda(),
294
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
295
+ stakeProgram: StakeProgram.programId,
296
+ systemProgram: SystemProgram.programId,
297
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
298
+ };
299
+
300
+ return this.program.methods.claimWithdraw().accounts(accounts).instruction();
301
+ }
302
+
303
+ /**
304
+ * Estimate ready time for target epoch using recent slot time.
305
+ */
306
+ private async estimateEpochEta(targetEpoch: bigint): Promise<{ etaMs: number; readyAtMs: number }> {
307
+ const conn = this.connection;
308
+ const epochInfo = await conn.getEpochInfo();
309
+ const schedule = await conn.getEpochSchedule();
310
+ const currentEpoch = BigInt(epochInfo.epoch);
311
+
312
+ if (targetEpoch <= currentEpoch) {
313
+ const now = Date.now();
314
+ return { etaMs: 0, readyAtMs: now };
315
+ }
316
+
317
+ let slotTimeSec = 0.4;
318
+ try {
319
+ const samples = await conn.getRecentPerformanceSamples(60);
320
+ if (samples?.length) {
321
+ const valid = samples.filter(s => s.numSlots > 0);
322
+ if (valid.length) {
323
+ slotTimeSec = valid.reduce((sum, s) => sum + s.samplePeriodSecs / s.numSlots, 0) / valid.length;
324
+ }
325
+ }
326
+ } catch (_) {
327
+ // ignore
328
+ }
329
+
330
+ const slotsPerEpoch = BigInt(schedule.slotsPerEpoch);
331
+ const slotsRemainingInCurrent = slotsPerEpoch - BigInt(epochInfo.slotIndex);
332
+ const epochsRemaining = targetEpoch - currentEpoch - BigInt(1);
333
+ const slotsRemaining =
334
+ (epochsRemaining > 0 ? epochsRemaining * slotsPerEpoch : BigInt(0)) +
335
+ slotsRemainingInCurrent;
336
+
337
+ const etaSeconds = Number(slotsRemaining) * slotTimeSec;
338
+ const etaMs = Math.max(0, Math.round(etaSeconds * 1000));
339
+ return { etaMs, readyAtMs: Date.now() + etaMs };
340
+ }
341
+ }
@@ -1,15 +1,12 @@
1
1
  import { AnchorProvider, Program, BN } from '@coral-xyz/anchor';
2
- import { PublicKey } from '@solana/web3.js';
3
-
4
- import { SolanaProgramService } from '../program';
5
- import type { LiqsolCore } from '../../../assets/solana/types/liqsol_core';
6
- import {
7
- deriveDistributionStatePda,
8
- deriveLiqsolMintPda,
9
- deriveUserRecordPda,
10
- } from '../constants';
11
- import type { DistributionState, DistributionUserRecord } from '../types';
2
+ import { PublicKey, SystemProgram, TransactionInstruction } from '@solana/web3.js';
3
+
4
+ import { LiqsolCoreClientIdl, SolanaProgramService } from '../program';
5
+ import type { DistributionState, DistributionUserRecord, GlobalConfig, PayRateEntry, PayRateHistory } from '../types';
12
6
  import { getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';
7
+ import { ceilDiv } from '../utils';
8
+
9
+ const INDEX_SCALE_BN = new BN('1000000000000');
13
10
 
14
11
  /**
15
12
  * Distribution client – wraps the distribution portion of the liqsol_core
@@ -30,24 +27,35 @@ import { getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID } from '@solana/sp
30
27
  * - DistributionState + UserRecord track *shares* for yield.
31
28
  */
32
29
  export class DistributionClient {
33
- private program: Program<LiqsolCore>;
30
+ private program: Program<LiqsolCoreClientIdl>;
34
31
 
35
- constructor(private provider: AnchorProvider) {
36
- const svc = new SolanaProgramService(provider);
37
- this.program = svc.getProgram('liqsolCore');
32
+ constructor(
33
+ private readonly provider: AnchorProvider,
34
+ private readonly pgs: SolanaProgramService
35
+ ) {
36
+ this.program = pgs.getProgram('liqsolCore');
38
37
  }
39
38
 
40
39
  get connection() {
41
40
  return this.provider.connection;
42
41
  }
43
42
 
43
+ private async getTokenBalance(ata: PublicKey): Promise<BN> {
44
+ try {
45
+ const bal = await this.connection.getTokenAccountBalance(ata);
46
+ return new BN(bal.value.amount);
47
+ } catch {
48
+ return new BN(0);
49
+ }
50
+ }
51
+
44
52
  /**
45
53
  * Fetch the global distribution state account.
46
54
  *
47
55
  * IDL account name: "distributionState"
48
56
  */
49
57
  async getDistributionState(): Promise<DistributionState | null> {
50
- const pda = deriveDistributionStatePda();
58
+ const pda = this.pgs.deriveDistributionStatePda();
51
59
  try {
52
60
  return await this.program.account.distributionState.fetch(pda);
53
61
  } catch {
@@ -55,6 +63,39 @@ export class DistributionClient {
55
63
  }
56
64
  }
57
65
 
66
+
67
+ /**
68
+ * Fetch the global payRateHistory account (circular buffer of scaled pay rates).
69
+ *
70
+ * IDL account name: "payRateHistory"
71
+ */
72
+ async getPayRateHistory(): Promise<PayRateHistory | null> {
73
+ const pda = this.pgs.derivePayRateHistoryPda();
74
+ try {
75
+ // Anchor types map directly onto our PayRateHistory TS type
76
+ return (await this.program.account.payRateHistory.fetch(
77
+ pda,
78
+ )) as PayRateHistory;
79
+ } catch {
80
+ return null;
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Fetch the globalConfig account (contains depositFeeMultiplier, etc).
86
+ *
87
+ * IDL account name: "globalConfig"
88
+ */
89
+ async getGlobalConfig(): Promise<GlobalConfig | null> {
90
+ const pda = this.pgs.deriveGlobalConfigPda();
91
+ try {
92
+ return (await this.program.account.globalConfig.fetch(
93
+ pda,
94
+ )) as GlobalConfig;
95
+ } catch {
96
+ return null;
97
+ }
98
+ }
58
99
  /**
59
100
  * Fetch a user's distribution userRecord (or null if missing).
60
101
  *
@@ -63,17 +104,17 @@ export class DistributionClient {
63
104
  async getUserRecord(
64
105
  ownerOrAta: PublicKey,
65
106
  ): Promise<DistributionUserRecord | null> {
66
- const liqsolMint = deriveLiqsolMintPda();
107
+ const liqsolMint = this.pgs.deriveLiqsolMintPda();
67
108
 
68
109
  // 1) Try treating ownerOrAta as a WALLET: derive its liqSOL ATA, then userRecord.
69
110
  try {
70
111
  const ata = getAssociatedTokenAddressSync(
71
112
  liqsolMint,
72
113
  ownerOrAta,
73
- false,
114
+ true,
74
115
  TOKEN_2022_PROGRAM_ID,
75
116
  );
76
- const pdaFromWallet = deriveUserRecordPda(ata);
117
+ const pdaFromWallet = this.pgs.deriveUserRecordPda(ata);
77
118
  const recFromWallet =
78
119
  await this.program.account.userRecord.fetchNullable(pdaFromWallet);
79
120
  if (recFromWallet) {
@@ -85,7 +126,7 @@ export class DistributionClient {
85
126
 
86
127
  // 2) Fallback: treat ownerOrAta as already being the TOKEN ACCOUNT.
87
128
  try {
88
- const pdaFromAta = deriveUserRecordPda(ownerOrAta);
129
+ const pdaFromAta = this.pgs.deriveUserRecordPda(ownerOrAta);
89
130
  return await this.program.account.userRecord.fetchNullable(pdaFromAta);
90
131
  } catch {
91
132
  return null;
@@ -130,4 +171,188 @@ export class DistributionClient {
130
171
 
131
172
  return { shares: userShares, totalShares, ratio };
132
173
  }
133
- }
174
+
175
+ /**
176
+ * Compute claimable liqSOL for a wallet:
177
+ * claimable = max(0, entitled - actual)
178
+ * entitled = floor(shares * syncedIndex / 1e12)
179
+ *
180
+ * `syncedIndex` mirrors on-chain `sync_index` behavior by incorporating any
181
+ * unsynced bucket delta (bucket_balance - last_bucket_balance).
182
+ */
183
+ async getClaimableLiqsol(user: PublicKey): Promise<BN> {
184
+ const liqsolMint = this.pgs.deriveLiqsolMintPda();
185
+ const bucketAuthority = this.pgs.deriveBucketAuthorityPda();
186
+
187
+ const userAta = getAssociatedTokenAddressSync(
188
+ liqsolMint,
189
+ user,
190
+ true,
191
+ TOKEN_2022_PROGRAM_ID,
192
+ );
193
+ const bucketTokenAccount = getAssociatedTokenAddressSync(
194
+ liqsolMint,
195
+ bucketAuthority,
196
+ true,
197
+ TOKEN_2022_PROGRAM_ID,
198
+ );
199
+
200
+ const [distributionState, userRecord, actualBalance, bucketBalance] = await Promise.all([
201
+ this.getDistributionState(),
202
+ this.getUserRecord(user),
203
+ this.getTokenBalance(userAta),
204
+ this.getTokenBalance(bucketTokenAccount),
205
+ ]);
206
+
207
+ if (!distributionState || !userRecord) {
208
+ return new BN(0);
209
+ }
210
+
211
+ let syncedIndex = new BN(distributionState.currentIndex.toString());
212
+ const totalShares = new BN(distributionState.totalShares.toString());
213
+ const lastBucketBalance = new BN(distributionState.lastBucketBalance.toString());
214
+
215
+ if (totalShares.gt(new BN(0)) && bucketBalance.gt(lastBucketBalance)) {
216
+ const delta = bucketBalance.sub(lastBucketBalance);
217
+ const indexDelta = delta.mul(INDEX_SCALE_BN).div(totalShares);
218
+ if (indexDelta.gt(new BN(0))) {
219
+ syncedIndex = syncedIndex.add(indexDelta);
220
+ }
221
+ }
222
+
223
+ const shares = new BN(userRecord.shares.toString());
224
+ const entitled = shares.mul(syncedIndex).div(INDEX_SCALE_BN);
225
+
226
+ if (entitled.lte(actualBalance)) {
227
+ return new BN(0);
228
+ }
229
+ return entitled.sub(actualBalance);
230
+ }
231
+
232
+ /**
233
+ * Build claim_rewards instruction for a wallet.
234
+ */
235
+ async buildClaimRewardsIx(user: PublicKey): Promise<TransactionInstruction> {
236
+ const liqsolMint = this.pgs.deriveLiqsolMintPda();
237
+ const distributionState = this.pgs.deriveDistributionStatePda();
238
+ const bucketAuthority = this.pgs.deriveBucketAuthorityPda();
239
+
240
+ const userAta = getAssociatedTokenAddressSync(
241
+ liqsolMint,
242
+ user,
243
+ true,
244
+ TOKEN_2022_PROGRAM_ID,
245
+ );
246
+ const bucketTokenAccount = getAssociatedTokenAddressSync(
247
+ liqsolMint,
248
+ bucketAuthority,
249
+ true,
250
+ TOKEN_2022_PROGRAM_ID,
251
+ );
252
+
253
+ const userRecord = this.pgs.deriveUserRecordPda(userAta);
254
+ const bucketUserRecord = this.pgs.deriveUserRecordPda(bucketTokenAccount);
255
+ const extraAccountMetaList = this.pgs.deriveExtraAccountMetaListPda(liqsolMint);
256
+
257
+ return this.program.methods
258
+ .claimRewards()
259
+ .accounts({
260
+ user,
261
+ userAta,
262
+ userRecord,
263
+ bucketUserRecord,
264
+ distributionState,
265
+ extraAccountMetaList,
266
+ liqsolCoreProgram: this.pgs.PROGRAM_IDS.LIQSOL_CORE,
267
+ transferHookProgram: this.pgs.PROGRAM_IDS.TRANSFER_HOOK,
268
+ liqsolMint,
269
+ bucketAuthority,
270
+ bucketTokenAccount,
271
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
272
+ systemProgram: SystemProgram.programId
273
+ })
274
+ .instruction();
275
+ }
276
+
277
+ /**
278
+ * Compute an average scaled pay rate over the most recent `windowSize`
279
+ * valid entries in the pay-rate history circular buffer.
280
+ *
281
+ * Returns a BN scaled by 1e12 (same as on-chain).
282
+ */
283
+ async getAverageScaledPayRate(windowSize = 5): Promise<BN> {
284
+ const history = await this.getPayRateHistory();
285
+ if (!history) {
286
+ return new BN(0);
287
+ }
288
+
289
+ const entries: PayRateEntry[] = history.entries ?? [];
290
+ if (!entries.length) {
291
+ return new BN(0);
292
+ }
293
+
294
+ const maxEntries: number =
295
+ typeof history.maxEntries === 'number'
296
+ ? history.maxEntries
297
+ : entries.length;
298
+
299
+ const rawTotalAdded: any = history.totalEntriesAdded ?? 0;
300
+ const totalAddedBn = new BN(rawTotalAdded.toString());
301
+
302
+ // No valid entries written yet
303
+ if (totalAddedBn.isZero()) {
304
+ return new BN(0);
305
+ }
306
+
307
+ const totalAdded = Math.min(
308
+ totalAddedBn.toNumber(),
309
+ maxEntries,
310
+ entries.length,
311
+ );
312
+
313
+ if (!totalAdded) {
314
+ return new BN(0);
315
+ }
316
+
317
+ const COUNT = Math.max(1, Math.min(windowSize, totalAdded));
318
+
319
+ const currentIndexNum = Number(history.currentIndex ?? 0);
320
+
321
+ // Most recently written entry is at currentIndex - 1 (mod maxEntries)
322
+ let idx =
323
+ currentIndexNum === 0
324
+ ? maxEntries - 1
325
+ : currentIndexNum - 1;
326
+
327
+ let sum = new BN(0);
328
+ let valid = 0;
329
+ const zero = new BN(0);
330
+
331
+ for (let i = 0; i < COUNT; i++) {
332
+ const entry: any = entries[idx];
333
+ if (entry) {
334
+ // Support both camelCase and snake_case (for safety)
335
+ const rawScaled =
336
+ entry.scaledRate ??
337
+ entry.scaled_rate ??
338
+ 0;
339
+
340
+ const rate = new BN(rawScaled.toString());
341
+ if (rate.gt(zero)) {
342
+ sum = sum.add(rate);
343
+ valid += 1;
344
+ }
345
+ }
346
+
347
+ // Walk backwards through the circular buffer
348
+ idx = idx === 0 ? maxEntries - 1 : idx - 1;
349
+ }
350
+
351
+ if (!valid) {
352
+ return new BN(0);
353
+ }
354
+
355
+ // Same behavior as the dashboard: use a ceiling-like average
356
+ return ceilDiv(sum, new BN(valid));
357
+ }
358
+ }