@wireio/stake 0.4.3 → 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 +51760 -10073
  3. package/lib/stake.browser.js.map +1 -1
  4. package/lib/stake.d.ts +11856 -882
  5. package/lib/stake.js +52320 -10531
  6. package/lib/stake.js.map +1 -1
  7. package/lib/stake.m.js +51760 -10073
  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 +34 -0
  398. package/src/assets/solana/devnet/idl/transfer_hook.json +490 -0
  399. package/src/assets/solana/{idl → devnet/idl}/validator_leaderboard.json +15 -0
  400. package/src/assets/solana/devnet/types/liqsol_core.ts +8572 -0
  401. package/src/assets/solana/{types → devnet/types}/liqsol_token.ts +34 -0
  402. package/src/assets/solana/devnet/types/transfer_hook.ts +496 -0
  403. package/src/assets/solana/{types → devnet/types}/validator_leaderboard.ts +15 -0
  404. package/src/assets/solana/{idl → mainnet/idl}/liqsol_core.json +632 -433
  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 +632 -433
  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 +370 -202
  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 +55 -287
  437. package/src/networks/solana/program.ts +446 -28
  438. package/src/networks/solana/solana.ts +917 -288
  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 +102 -22
  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 -197
  524. package/src/assets/solana/types/transfer_hook.ts +0 -203
  525. package/src/networks/solana/clients/deposit.client.ts +0 -274
  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
@@ -8,13 +8,16 @@ import {
8
8
  TrancheSnapshot
9
9
  } from '../../types';
10
10
  import { EthereumContractService } from './contract';
11
- import { preLaunchReceipt } from './types';
11
+ import { preLaunchReceipt, WithdrawReceipt } from './types';
12
12
  import { buildEthereumTrancheSnapshot } from './utils';
13
13
  import { ConvertClient } from './clients/convert.client';
14
14
  import { StakeClient } from './clients/stake.client';
15
15
  import { PretokenClient } from './clients/pretoken.client';
16
16
  import { OPPClient } from './clients/opp.client';
17
17
  import { ReceiptClient } from './clients/receipt.client';
18
+ import { ValidatorClient } from './clients/validator.client';
19
+
20
+ export const INITIAL_TRANCHE_SUPPLY = 35000;
18
21
 
19
22
  export class EthereumStakingClient implements IStakingClient {
20
23
  private readonly provider: ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider;
@@ -27,10 +30,11 @@ export class EthereumStakingClient implements IStakingClient {
27
30
  private stakeClient: StakeClient;
28
31
  private oppClient: OPPClient;
29
32
  private receiptClient: ReceiptClient;
30
-
33
+ private validatorClient: ValidatorClient;
31
34
 
32
35
  get contract() { return this.contractService.contract; }
33
36
  get network() { return this.config.network; }
37
+ get address() { return this.signer?.getAddress(); }
34
38
 
35
39
  constructor(private config: StakerConfig) {
36
40
  try {
@@ -46,6 +50,7 @@ export class EthereumStakingClient implements IStakingClient {
46
50
  this.contractService = new EthereumContractService({
47
51
  provider: this.provider,
48
52
  signer: this.signer,
53
+ chainId: config.network.chainId as EvmChainID,
49
54
  });
50
55
 
51
56
  this.convertClient = new ConvertClient(this.contractService);
@@ -53,6 +58,7 @@ export class EthereumStakingClient implements IStakingClient {
53
58
  this.stakeClient = new StakeClient(this.contractService);
54
59
  this.oppClient = new OPPClient(this.contractService);
55
60
  this.receiptClient = new ReceiptClient(this.contractService);
61
+ this.validatorClient = new ValidatorClient(this.contractService)
56
62
  }
57
63
  catch (error) {
58
64
  // console.error('Error initializing EthereumStakingClient:', error);
@@ -89,13 +95,38 @@ export class EthereumStakingClient implements IStakingClient {
89
95
  async withdraw(amount: bigint): Promise<string> {
90
96
  this.ensureUser();
91
97
 
92
- const address = await this.signer!.getAddress();
98
+ const address = await this.address!;
93
99
  const amountWei = BigNumber.from(amount);
94
100
 
95
101
  const result = await this.convertClient.performWithdraw(address, amountWei)
96
102
  return result.txHash;
97
103
  }
98
104
 
105
+ /**
106
+ * List withdrawal queue receipts for a wallet (pending / in-progress exits after safeBurn).
107
+ * @param address Owner to query; defaults to the connected wallet.
108
+ * @returns Withdrawal receipt NFT entries from the protocol view
109
+ */
110
+ async getPendingWithdraws(address?: string): Promise<WithdrawReceipt[]> {
111
+ this.ensureUser();
112
+ const owner = address ?? await this.address!;
113
+ return await this.receiptClient.fetchWithdrawReceipts(owner);
114
+ }
115
+
116
+ /**
117
+ * Claim native ETH for a matured withdrawal using the WithdrawalQueue NFT token id
118
+ * (via DepositManager.claim after the delay has passed).
119
+ * @param tokenId Withdrawal request / queue NFT token id
120
+ * @returns transaction hash
121
+ */
122
+ async claimWithdraw(tokenId: bigint): Promise<string> {
123
+ this.ensureUser();
124
+
125
+ const tokenIdBigNum = BigNumber.from(tokenId)
126
+ const result = await this.convertClient.claimWithdraw(tokenIdBigNum)
127
+ return result.txHash;
128
+ }
129
+
99
130
 
100
131
  /**
101
132
  * Stake liqETH via DepositManager.
@@ -105,7 +136,7 @@ export class EthereumStakingClient implements IStakingClient {
105
136
  async stake(amount: bigint): Promise<string> {
106
137
  this.ensureUser();
107
138
 
108
- const walletAddress = await this.signer!.getAddress();
139
+ const walletAddress = await this.address!;
109
140
  const amountWei = BigNumber.from(amount);
110
141
 
111
142
  const result = await this.stakeClient.performStake(amountWei, walletAddress);
@@ -118,6 +149,46 @@ export class EthereumStakingClient implements IStakingClient {
118
149
  throw new Error("Method not yet implemented.");
119
150
  }
120
151
 
152
+ /**
153
+ * Deposit ETH to liqETH, then stake liqETH in a single transaction.
154
+ * @param amountWei Amount in wei.
155
+ * @returns transaction hash
156
+ */
157
+ async depositAndStake(amountWei: bigint): Promise<string> {
158
+ this.ensureUser();
159
+ if (!amountWei || amountWei <= BigInt(0))
160
+ throw new Error('Amount must be greater than zero.');
161
+
162
+ const result = await this.stakeClient.performDepositAndStake(BigNumber.from(amountWei));
163
+ return result.txHash;
164
+ }
165
+
166
+ /**
167
+ * Deposit ETH to liqETH, then purchase pretokens in a single transaction.
168
+ * @param amountWei Amount in wei.
169
+ * @returns transaction hash
170
+ */
171
+ async depositAndBuy(amountWei: bigint): Promise<string> {
172
+ this.ensureUser();
173
+ if (!amountWei || amountWei <= BigInt(0))
174
+ throw new Error('Amount must be greater than zero.');
175
+
176
+ const result = await this.stakeClient.performDepositAndPurchase(BigNumber.from(amountWei));
177
+ return result.txHash;
178
+ }
179
+
180
+ /**
181
+ * Unstake liqETH, then request a withdrawal in a single transaction.
182
+ * @param tokenId The ReceiptNFT token ID for the stake position
183
+ * @returns transaction hash
184
+ */
185
+ async unstakeAndWithdraw(tokenId: bigint): Promise<string> {
186
+ this.ensureUser();
187
+
188
+ const result = await this.stakeClient.performUnstakeAndRequestWithdraw(BigNumber.from(tokenId));
189
+ return result.txHash;
190
+ }
191
+
121
192
 
122
193
  /**
123
194
  * ETH Prelaunch function to unstake liqEth
@@ -137,16 +208,34 @@ export class EthereumStakingClient implements IStakingClient {
137
208
  async buy(amount: bigint): Promise<string> {
138
209
  this.ensureUser();
139
210
 
140
- const buyer = await this.signer!.getAddress();
211
+ const buyer = await this.address!;
141
212
 
142
213
  // ! Hoodi only - check if the mock aggregator price is stale, and if so, update it before submitting the buy request
143
- await this.updateMockAggregatorPrice();
214
+ // const network = await this.provider.getNetwork();
215
+ // const chainId = network.chainId;
216
+ // const allowedTestChains = new Set([560048]);
217
+ // if (allowedTestChains.has(chainId)) await this.updateMockAggregatorPrice();
144
218
 
145
219
  let result = await this.pretokenClient.purchasePretokensWithLiqETH(amount, buyer);
146
220
  return result && result.txHash ? result.txHash : "Error - no resulting txHash";
147
221
  }
148
222
 
149
223
 
224
+ /**
225
+ * Validator functions
226
+ */
227
+ async validatorDeposit(): Promise<string> {
228
+ this.ensureUser();
229
+
230
+ let result = await this.validatorClient.validatorDepositAndLockBond();
231
+ return result && result.txHash ? result.txHash : "Error - no resulting txHash";
232
+ }
233
+
234
+
235
+
236
+
237
+
238
+
150
239
  /**
151
240
  * Resolve the user's ETH + liqETH balances.
152
241
  *
@@ -154,101 +243,107 @@ export class EthereumStakingClient implements IStakingClient {
154
243
  * actual = liqETH token balance (ERC-20)
155
244
  * tracked = liqETH tracked balance (protocol/accounting view)
156
245
  */
157
- async getPortfolio(): Promise<Portfolio> {
158
- this.ensureUser();
246
+ async getPortfolio(address?: string): Promise<Portfolio | null> {
247
+
248
+ try {
249
+ if (!this.signer) return Promise.resolve(null);
159
250
 
160
- const walletAddress = await this.signer!.getAddress();
251
+ const walletAddress = address ?? await this.address!;
161
252
 
162
- // 1) Native ETH balance
163
- const nativeBalance = await this.provider.getBalance(walletAddress);
164
- const nativeDecimals = this.network?.nativeCurrency?.decimals ?? 18;
165
- const nativeSymbol = this.network?.nativeCurrency?.symbol ?? 'ETH';
253
+ // 1) Native ETH balance
254
+ const nativeBalance = await this.provider.getBalance(walletAddress);
255
+ const nativeDecimals = this.network?.nativeCurrency?.decimals ?? 18;
256
+ const nativeSymbol = this.network?.nativeCurrency?.symbol ?? 'ETH';
166
257
 
167
- // 2) liqETH ERC-20 balance (actual)
168
- const liqBalance: ethers.BigNumber = await this.contract.LiqEth.balanceOf(walletAddress);
169
- const liqSymbol = 'Liq' + (this.network?.nativeCurrency?.symbol ?? 'ETH');
258
+ // 2) liqETH ERC-20 balance (actual)
259
+ const liqBalance: ethers.BigNumber = await this.contract.LiqEthToken.balanceOf(walletAddress);
260
+ const liqSymbol = 'Liq' + (this.network?.nativeCurrency?.symbol ?? 'ETH');
170
261
 
171
- // 3) staked liqEth ERC-20 balance (calculate from receipts)
172
- let stakeReceipts = await this.receiptClient.stakeReceipts(walletAddress);
173
- let stakeBalanceBN = BigNumber.from(0);
174
- for (let r of stakeReceipts) {
175
- stakeBalanceBN = stakeBalanceBN.add(BigNumber.from(r.receipt.principal.amount));
176
- }
177
- let stakeSharesBN = BigNumber.from(0);
178
- for (let r of stakeReceipts) {
179
- stakeSharesBN = stakeSharesBN.add(BigNumber.from(r.receipt.shares.amount));
180
- }
262
+ // 3) staked liqEth ERC-20 balance (calculate from receipts)
263
+ let stakeReceipts = await this.receiptClient.stakeReceipts(walletAddress);
181
264
 
182
- // 4) WIRE pretoken balance
183
- const wireBalance: ethers.BigNumber = await this.contract.Pretoken.balanceOf(walletAddress);
265
+ let stakeBalanceBN = BigNumber.from(0);
266
+ for (let r of stakeReceipts) {
267
+ stakeBalanceBN = stakeBalanceBN.add(BigNumber.from(r.receipt.principal.amount));
268
+ }
269
+ let stakeSharesBN = BigNumber.from(0);
270
+ for (let r of stakeReceipts) {
271
+ stakeSharesBN = stakeSharesBN.add(BigNumber.from(r.receipt.shares.amount));
272
+ }
184
273
 
274
+ // 4) WIRE pretoken balance
275
+ const wireBalance: ethers.BigNumber = await this.contract.Pretoken.balanceOf(walletAddress);
185
276
 
186
- // 5) Calculate staking yield
187
- let currentIndex = BigInt(0);
188
- let totalShares = BigInt(0);
189
- let userShares = BigInt(0);
190
- const indexScale = BigInt(1e27);
191
- try {
192
- // These may throw if not implemented on contract
193
- const [indexBn, totalSharesBn] = await Promise.all([
194
- this.contract.Depositor.index().catch(() => BigNumber.from(0)),
195
- this.contract.Depositor.totalShares().catch(() => BigNumber.from(0)),
196
- ]);
277
+ // 5) Calculate staking yield
278
+ let currentIndex = BigInt(0);
279
+ let totalShares = BigInt(0);
280
+ let userShares = BigInt(0);
281
+ const indexScale = BigInt(1e27);
282
+ try {
283
+ // These may throw if not implemented on contract
284
+ const [indexBn, totalSharesBn] = await Promise.all([
285
+ this.contract.Depositor.index().catch(() => BigNumber.from(0)),
286
+ this.contract.Depositor.totalShares().catch(() => BigNumber.from(0)),
287
+ ]);
288
+
289
+ const userSharesBn = stakeSharesBN;
290
+ currentIndex = BigInt(indexBn.toString());
291
+ totalShares = BigInt(totalSharesBn.toString());
292
+ userShares = BigInt(userSharesBn.toString());
293
+ } catch (error) {
294
+ console.log('Error fetching staking index/shares:', error);
295
+ }
296
+
297
+ // sharesToTokens(userShares, currentIndex) = userShares * currentIndex / indexScale
298
+ let estimatedClaim = BigInt(0);
299
+ let estimatedYield = BigInt(0);
300
+
301
+ if (userShares > BigInt(0) && currentIndex > BigInt(0)) {
302
+ estimatedClaim = (userShares * currentIndex) / indexScale;
303
+ if (estimatedClaim > stakeBalanceBN.toBigInt()) {
304
+ estimatedYield = estimatedClaim - stakeBalanceBN.toBigInt();
305
+ }
306
+ }
197
307
 
198
- const userSharesBn = stakeSharesBN;
199
- currentIndex = BigInt(indexBn.toString());
200
- totalShares = BigInt(totalSharesBn.toString());
201
- userShares = BigInt(userSharesBn.toString());
202
- } catch {}
203
-
204
- // sharesToTokens(userShares, currentIndex) = userShares * currentIndex / indexScale
205
- let estimatedClaim = BigInt(0);
206
- let estimatedYield = BigInt(0);
207
-
208
- // started work on estimating the user's personal APY - not necessary at the moment
209
- // let estimatedAPY: number | null = null;
210
- // if (userShares > BigInt(0) && currentIndex > BigInt(0)) {
211
- // estimatedClaim = (userShares * currentIndex) / indexScale;
212
- // if (estimatedClaim > stakeBalanceBN.toBigInt()) {
213
- // estimatedYield = estimatedClaim - stakeBalanceBN.toBigInt();
214
- // }
215
-
216
- // estimatedAPY = null;
217
- // }
218
-
219
- const portfolio: Portfolio = {
220
- native: {
221
- amount: nativeBalance.toBigInt(),
222
- decimals: nativeDecimals,
223
- symbol: nativeSymbol,
224
- },
225
- liq: {
226
- amount: liqBalance.toBigInt(),
227
- decimals: nativeDecimals,
228
- symbol: liqSymbol,
229
- },
230
- staked: {
231
- amount: stakeBalanceBN.toBigInt(),
232
- decimals: nativeDecimals,
233
- symbol: liqSymbol,
234
- },
235
- wire: {
236
- amount: wireBalance.toBigInt(),
237
- decimals: 18,
238
- symbol: '$WIRE',
239
- },
240
-
241
- yield: {
242
- currentIndex,
243
- indexScale,
244
- totalShares,
245
- userShares,
246
- estimatedClaim,
247
- estimatedYield,
248
- },
249
- chainID: this.network.chainId
308
+
309
+ const portfolio: Portfolio = {
310
+ native: {
311
+ amount: nativeBalance.toBigInt(),
312
+ decimals: nativeDecimals,
313
+ symbol: nativeSymbol,
314
+ },
315
+ liq: {
316
+ amount: liqBalance.toBigInt(),
317
+ decimals: nativeDecimals,
318
+ symbol: liqSymbol,
319
+ },
320
+ staked: {
321
+ amount: stakeBalanceBN.toBigInt(),
322
+ decimals: nativeDecimals,
323
+ symbol: liqSymbol,
324
+ },
325
+ wire: {
326
+ amount: wireBalance.toBigInt(),
327
+ decimals: 18,
328
+ symbol: '$WIRE',
329
+ },
330
+
331
+ yield: {
332
+ currentIndex,
333
+ indexScale,
334
+ totalShares,
335
+ userShares,
336
+ estimatedClaim,
337
+ estimatedYield,
338
+ },
339
+ chainID: this.network.chainId
340
+ }
341
+ return portfolio;
342
+ }
343
+ catch (error) {
344
+ // console.log('Error fetching Ethereum portfolio:', error);
345
+ throw error;
250
346
  }
251
- return portfolio;
252
347
  }
253
348
 
254
349
  /**
@@ -259,7 +354,7 @@ export class EthereumStakingClient implements IStakingClient {
259
354
  async fetchPrelaunchReceipts(address?: string): Promise<preLaunchReceipt[]> {
260
355
  this.ensureUser();
261
356
 
262
- if (address === undefined) address = await this.signer!.getAddress();
357
+ if (address === undefined) address = await this.address!;
263
358
 
264
359
  //default to stake receipts
265
360
  return await this.receiptClient.stakeReceipts(address);
@@ -268,11 +363,13 @@ export class EthereumStakingClient implements IStakingClient {
268
363
  async getOPPMessages(address?: string): Promise<OPPAssertion[]> {
269
364
  this.ensureUser();
270
365
 
271
- if (!address) address = await this.signer!.getAddress();
366
+ if (!address) address = await this.address!;
272
367
 
273
368
  return await this.oppClient.getMessages(address);
274
369
  }
275
370
 
371
+
372
+
276
373
  // Ensure that signer wallet is available for write operations
277
374
  private ensureUser() {
278
375
  if (!this.signer) {
@@ -287,10 +384,18 @@ export class EthereumStakingClient implements IStakingClient {
287
384
  // READ-ONLY Public Methods
288
385
  // ---------------------------------------------------------------------
289
386
 
290
- // Estimated total APY for staking yeild
387
+ // Protocol-wide ETH staking APY in percent, e.g. 3.0 => "3.00%"
291
388
  async getSystemAPY(): Promise<number> {
389
+ // NOTE: despite the name, this value is effectively *annual* BPS on-chain.
390
+ // e.g. 300 => 3% APY
292
391
  const annualBpsBn = await this.contract.DepositManager.dailyRateBPS();
293
- return annualBpsBn.toNumber() / 10000; // 0.04 for 4%
392
+ const annualBps = annualBpsBn.toNumber(); // e.g. 300 for 3%
393
+
394
+ // Convert basis points (1/100 of 1%) to percent:
395
+ // 10,000 bps = 100% ⇒ 100 bps = 1% ⇒ divide by 100.
396
+ const apyPercent = annualBps / 100;
397
+
398
+ return apyPercent; // 3 => "3.00%"
294
399
  }
295
400
 
296
401
  // Protocol fee charged for deposit from Native to LIQ
@@ -304,7 +409,7 @@ export class EthereumStakingClient implements IStakingClient {
304
409
  }
305
410
 
306
411
  async getEthStats(): Promise<any> {
307
- let withdrawDelay = await this.contract.DepositManager.withdrawDelay();
412
+ let withdrawDelay = await this.contract.WithdrawalQueue.withdrawDelay();
308
413
  let minDeposit = await this.contract.DepositManager.minDeposit();
309
414
  let rewardCooldown = await this.contract.DepositManager.rewardCooldown();
310
415
 
@@ -320,117 +425,180 @@ export class EthereumStakingClient implements IStakingClient {
320
425
  *
321
426
  * SUPPORTS READ-ONLY ACcESS
322
427
  */
323
- async getTrancheSnapshot(options?: {
324
- chainID?: ChainID;
325
- windowBefore?: number;
326
- windowAfter?: number;
327
- }): Promise<TrancheSnapshot> {
328
- const {
329
- chainID = EvmChainID.Hoodi,
330
- windowBefore,
331
- windowAfter,
332
- } = options ?? {};
333
-
334
-
335
- const blockNumber = await this.provider.getBlockNumber();
336
- const blockTag = { blockTag: blockNumber };
337
-
338
- // Fetch all required contract data
339
- const [totalSharesBn, indexBn, trancheNumberBn, trancheSupplyBn, tranchePriceWadBn, totalSupplyBn, supplyGrowthBps, priceGrowthBps, minPriceUsd, maxPriceUsd] = await Promise.all([
340
- this.contract.Depositor.totalShares(blockTag),
341
- this.contract.Depositor.index(blockTag),
342
- this.contract.Pretoken.trancheNumber(blockTag),
343
- this.contract.Pretoken.trancheSupply(blockTag),
344
- this.contract.Pretoken.tranchePriceUsd(blockTag),
345
- this.contract.Pretoken.totalSupply(blockTag),
346
- this.contract.Pretoken.supplyGrowthBps(blockTag),
347
- this.contract.Pretoken.priceGrowthBps(blockTag),
348
- this.contract.EthUsdPriceConsumer.MIN_PRICE(),
349
- this.contract.EthUsdPriceConsumer.MAX_PRICE(),
350
- ]);
351
-
352
-
353
- const totalTrancheSupply = BigInt(totalSupplyBn.toString()) / BigInt(1e10);
354
- const currentTrancheSupply = BigInt(trancheSupplyBn.toString()) / BigInt(1e10);
355
-
356
-
357
- // fetch price and timestamp from aggregator
358
- const [roundId, answer, startedAt, updatedAt, answeredInRound] = await this.contract.Aggregator.latestRoundData();
359
- let ethPriceUsd: bigint = BigInt(answer.toString());
360
- let nativePriceTimestamp: number = Number(updatedAt);
361
-
362
- // ! Placeholder from hoodi deployment - don't think this can be fetched dynamically
363
- const initialTrancheSupply = BigInt(60000) * BigInt(1e8);
364
-
365
- return buildEthereumTrancheSnapshot({
366
- chainID,
367
- totalSharesBn,
368
- indexBn,
369
- trancheNumberBn,
370
- currentTrancheSupply,
371
- tranchePriceWadBn,
372
- totalTrancheSupply,
373
- initialTrancheSupply,
374
- supplyGrowthBps,
375
- priceGrowthBps,
376
- minPriceUsd,
377
- maxPriceUsd,
378
-
379
- ethPriceUsd,
380
- nativePriceTimestamp,
381
- ladderWindowBefore: windowBefore,
382
- ladderWindowAfter: windowAfter,
383
- });
428
+ async getTrancheSnapshot(chainID: ChainID): Promise<TrancheSnapshot> {
429
+ try {
430
+ const blockNumber = await this.provider.getBlockNumber();
431
+ const blockTag = { blockTag: blockNumber };
432
+
433
+ // Fetch all required contract data
434
+ const [totalSharesBn, indexBn, trancheNumberBn, trancheSupplyBn, tranchePriceUsdBn, totalSupplyBn, supplyGrowthBps, priceGrowthCents, minPriceUsd, maxPriceUsd] = await Promise.all([
435
+ this.contract.Depositor.totalShares(blockTag),
436
+ this.contract.Depositor.index(blockTag),
437
+ this.contract.Pretoken.trancheNumber(blockTag),
438
+ this.contract.Pretoken.trancheSupply(blockTag),
439
+ this.contract.Pretoken.tranchePriceUsd(blockTag),
440
+ this.contract.Pretoken.totalSupply(blockTag),
441
+ this.contract.Pretoken.supplyGrowthBps(blockTag),
442
+ this.contract.Pretoken.priceIncrementUsd(blockTag),
443
+ this.contract.EthUsdPriceConsumer.MIN_PRICE(),
444
+ this.contract.EthUsdPriceConsumer.MAX_PRICE(),
445
+ ]);
446
+
447
+ const totalTrancheSupply = BigInt(totalSupplyBn.toString()) / BigInt(1e10);
448
+ const currentTrancheSupply = BigInt(trancheSupplyBn.toString()) / BigInt(1e10);
449
+
450
+ // fetch price and timestamp from aggregator
451
+ // const [roundId, answer, startedAt, updatedAt, answeredInRound] = await this.contract.MockAggregator.latestRoundData();
452
+ //originally fetched ethPrice from aggregator - pulling from EthUsdPriceConsumer instead - this is where the actual price gets pulled from when purchasing pretokens.
453
+ // let ethPriceUsd: bigint = BigInt(answer.toString());)
454
+
455
+ let ethPriceUsdBn = await this.contract.EthUsdPriceConsumer.getPrice18Decimals();
456
+ let ethPriceUsd: bigint = BigInt(ethPriceUsdBn.toString()) / BigInt(1e10);
457
+
458
+ // let nativePriceTimestamp: number = Number(updatedAt);
459
+
460
+ const initialTrancheSupply = BigInt(INITIAL_TRANCHE_SUPPLY) * BigInt(1e8);
461
+
462
+ return buildEthereumTrancheSnapshot({
463
+ chainID,
464
+ totalSharesBn,
465
+ indexBn,
466
+ trancheNumberBn,
467
+ currentTrancheSupply,
468
+ tranchePriceUsdBn,
469
+ totalTrancheSupply,
470
+ initialTrancheSupply,
471
+ supplyGrowthBps,
472
+ priceGrowthCents,
473
+ minPriceUsd,
474
+ maxPriceUsd,
475
+ ethPriceUsd,
476
+ });
477
+ }
478
+ catch (err: any) {
479
+ throw new Error(`Error fetching Ethereum tranche snapshot: ${err?.message || err}`);
480
+ }
384
481
  }
385
482
 
386
- // ---------------------------------------------------------------------
387
- // Internal ETH Staking client helper functions
388
- // ---------------------------------------------------------------------
483
+ /**
484
+ * Estimate a conservative native ETH buffer (in wei) to leave in the wallet
485
+ * so the user can pay gas for the current deposit and at least one more tx.
486
+ *
487
+ * Typical usage in UI:
488
+ * const buffer = await client.estimateGasBuffer();
489
+ * const maxSpendable = balanceWei > buffer ? balanceWei - buffer : 0n;
490
+ *
491
+ * @param options.txCount How many transactions to cover (default 2: deposit + 1 more)
492
+ * @param options.safetyMultiplier Additional safety multiplier on top of txCount (default 1.5x)
493
+ * @param options.minBufferWei Optional override minimum buffer (defaults ~0.002 ETH)
494
+ */
495
+ async getDepositBuffer(options?: {
496
+ txCount?: number;
497
+ safetyMultiplier?: number;
498
+ minBufferWei?: bigint;
499
+ balanceOverrideLamports?: bigint;
500
+ }): Promise<bigint> {
501
+ this.ensureUser();
389
502
 
390
- // ! This is a temporary measure for Hoodi testnet because there is no aggregator deployed
391
- private async updateMockAggregatorPrice() {
392
- const aggregator = this.contract.Aggregator;
393
-
394
- // read latest round & compute age
395
- const [roundId, answer, startedAt, updatedAt, answeredInRound] = await aggregator.latestRoundData();
396
- const now = (await this.provider.getBlock("latest")).timestamp;
397
- const ageSec = Number(now) - Number(updatedAt);
398
-
399
- const ONE_HOUR = 1 * 3600;
400
- // const ONE_HOUR = 10;
401
- if (ageSec > ONE_HOUR) {
402
- // safety check - only run in non-production contexts
403
- const network = await this.provider.getNetwork();
404
- const chainId = network.chainId;
405
- const allowedTestChains = new Set([560048]);
406
- if (!allowedTestChains.has(chainId)) {
407
- console.warn(`MockAggregator is stale (${ageSec}s) but chainId ${chainId} is not a test/local network — skipping update.`);
408
- return;
409
- }
503
+ const walletAddress = await this.address!;
410
504
 
505
+ // 1) Estimate a baseline gas usage using a simple self-transfer.
506
+ // This is cheap and doesn't depend on your contract ABI at all.
507
+ const baseGas = await this.provider.estimateGas({
508
+ from: walletAddress,
509
+ to: walletAddress,
510
+ value: ethers.constants.Zero,
511
+ });
411
512
 
412
- //fetch the current ETH / USD price
413
- const res = await fetch('https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd');
414
- const data = await res.json();
415
- const ethUsd = data.ethereum.usd;
513
+ // 2) Fetch current gas price / max fee per gas.
514
+ const feeData = await this.provider.getFeeData();
515
+ let gasPrice =
516
+ feeData.maxFeePerGas ??
517
+ feeData.gasPrice ??
518
+ ethers.utils.parseUnits('20', 'gwei'); // conservative fallback
416
519
 
417
- const currentEthPrice = ethers.utils.parseUnits(ethUsd.toString(), 8);
520
+ // 3) How many txs do we want to cover?
521
+ // Default: 2 (deposit + one extra action such as stake or small follow-up).
522
+ const txCount = options?.txCount ?? 2;
418
523
 
419
- try {
420
- //update to be intentionally stale
421
- // const alttx = await aggregator.updateStale(currentEthPrice, now - 7200);
422
- // const altreceipt = await alttx.wait(1);
423
- // console.log('stale update receipt', altreceipt)
424
-
425
- //update answer with current timestamp
426
- const tx = await aggregator.updateAnswer(currentEthPrice);
427
- const txreceipt = await tx.wait(1);
428
- // console.log('MockAggregator answer updated - receipt:', txreceipt)
429
- } catch (err: any) {
430
- console.error('MockAggregator updateAnswer failed', err?.message || err);
431
- }
432
- } else {
433
- console.log(`MockAggregator updated ${ageSec}s ago — no update needed`);
524
+ // We also assume that contract interactions are more expensive than a simple transfer.
525
+ // Use a multiplier (e.g., 5x) on baseGas to approximate a more complex tx.
526
+ const COMPLEX_TX_MULTIPLIER = 5; // tuning knob
527
+ const totalGasUnits = baseGas
528
+ .mul(COMPLEX_TX_MULTIPLIER)
529
+ .mul(txCount);
530
+
531
+ const baseCost = totalGasUnits.mul(gasPrice);
532
+
533
+ // 4) Safety multiplier on top of that (e.g. 1.5x).
534
+ const safetyMultiplier = options?.safetyMultiplier ?? 1.5;
535
+ const safetyScaled = Math.round(safetyMultiplier * 100); // e.g. 150
536
+
537
+ const bufferedCost = baseCost
538
+ .mul(safetyScaled)
539
+ .div(100); // apply safety factor
540
+
541
+ let bufferWei = bufferedCost.toBigInt();
542
+
543
+ // 5) Enforce a minimum floor (e.g. ~0.002 ETH).
544
+ const defaultMinBufferWei = BigInt(2_000_000_000_000_000); // 0.002 ETH
545
+ const minBufferWei = options?.minBufferWei ?? defaultMinBufferWei;
546
+
547
+ if (bufferWei < minBufferWei) {
548
+ bufferWei = minBufferWei;
434
549
  }
550
+
551
+ return bufferWei;
435
552
  }
436
- }
553
+
554
+ // ---------------------------------------------------------------------
555
+ // Internal ETH Staking client helper functions
556
+ // ---------------------------------------------------------------------
557
+
558
+ // ! This is a temporary measure for Hoodi testnet because there is no aggregator deployed
559
+ // private async updateMockAggregatorPrice() {
560
+ // const aggregator = this.contract.MockAggregator;
561
+
562
+ // // read latest round & compute age
563
+ // const [roundId, answer, startedAt, updatedAt, answeredInRound] = await aggregator.latestRoundData();
564
+ // const now = (await this.provider.getBlock("latest")).timestamp;
565
+ // const ageSec = Number(now) - Number(updatedAt);
566
+
567
+ // const ONE_HOUR = 1 * 3600;
568
+ // // const ONE_HOUR = 10;
569
+ // if (ageSec > ONE_HOUR) {
570
+ // // safety check - only run in non-production contexts
571
+ // const network = await this.provider.getNetwork();
572
+ // const chainId = network.chainId;
573
+ // const allowedTestChains = new Set([560048]);
574
+ // if (!allowedTestChains.has(chainId)) {
575
+ // console.warn(`MockAggregator is stale (${ageSec}s) but chainId ${chainId} is not a test/local network — skipping update.`);
576
+ // return;
577
+ // }
578
+
579
+
580
+ // //fetch the current ETH / USD price
581
+ // const res = await fetch('https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd');
582
+ // const data = await res.json();
583
+ // const ethUsd = data.ethereum.usd;
584
+
585
+ // const currentEthPrice = ethers.utils.parseUnits(ethUsd.toString(), 8);
586
+
587
+ // try {
588
+ // //update to be intentionally stale
589
+ // // const alttx = await aggregator.updateStale(currentEthPrice, now - 7200);
590
+ // // const altreceipt = await alttx.wait(1);
591
+ // // console.log('stale update receipt', altreceipt)
592
+
593
+ // //update answer with current timestamp
594
+ // const tx = await aggregator.updateAnswer(currentEthPrice);
595
+ // const txreceipt = await tx.wait(1);
596
+ // // console.log('MockAggregator answer updated - receipt:', txreceipt)
597
+ // } catch (err: any) {
598
+ // console.error('MockAggregator updateAnswer failed', err?.message || err);
599
+ // }
600
+ // } else {
601
+ // console.log(`MockAggregator updated ${ageSec}s ago — no update needed`);
602
+ // }
603
+ // }
604
+ }