@wireio/stake 0.2.4 → 0.2.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 (554) hide show
  1. package/README.md +185 -243
  2. package/lib/stake.browser.js +59679 -12796
  3. package/lib/stake.browser.js.map +1 -1
  4. package/lib/stake.d.ts +16805 -3254
  5. package/lib/stake.js +60211 -13152
  6. package/lib/stake.js.map +1 -1
  7. package/lib/stake.m.js +59679 -12796
  8. package/lib/stake.m.js.map +1 -1
  9. package/package.json +6 -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/BeaconState.sol/BeaconState.json +807 -0
  40. package/src/assets/ethereum/hoodi/liqEth/DepositManager.sol/DepositManagerV2.dbg.json +4 -0
  41. package/src/assets/ethereum/hoodi/liqEth/DepositManager.sol/DepositManagerV2.json +985 -0
  42. package/src/assets/ethereum/hoodi/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +4 -0
  43. package/src/assets/ethereum/hoodi/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +1289 -0
  44. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  45. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IAccounting.json +182 -0
  46. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  47. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  48. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  49. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  50. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  51. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20.json +319 -0
  52. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  53. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +333 -0
  54. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  55. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IStakingModule.json +344 -0
  56. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  57. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +59 -0
  58. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  59. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +14 -12
  60. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  61. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/LiqEthCommon.json +2 -2
  62. package/src/assets/ethereum/hoodi/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +4 -0
  63. package/src/assets/ethereum/hoodi/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +236 -0
  64. package/src/assets/ethereum/hoodi/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +4 -0
  65. package/src/assets/ethereum/hoodi/liqEth/LiqEthManaged.sol/LiqEthManaged.json +229 -0
  66. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +4 -0
  67. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +957 -0
  68. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +4 -0
  69. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +1020 -0
  70. package/src/assets/ethereum/hoodi/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
  71. package/src/assets/ethereum/hoodi/liqEth/Yield.sol/YieldOracle.json +1376 -0
  72. package/src/assets/ethereum/hoodi/liqEth/accounting.sol/AccountingV2.dbg.json +4 -0
  73. package/src/assets/ethereum/hoodi/liqEth/accounting.sol/AccountingV2.json +629 -0
  74. package/src/assets/ethereum/hoodi/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +4 -0
  75. package/src/assets/ethereum/hoodi/liqEth/liqEth.sol/LiqEthTokenV2.json +1323 -0
  76. package/src/assets/ethereum/hoodi/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +4 -0
  77. package/src/assets/ethereum/hoodi/liqEth/stakingModule.sol/StakingModuleV2.json +1779 -0
  78. package/src/assets/ethereum/hoodi/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +4 -0
  79. package/src/assets/ethereum/hoodi/liqEth/v1/DepositManager.sol/DepositManager.json +978 -0
  80. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  81. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IAccounting.json +1 -1
  82. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  83. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +39 -0
  84. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  85. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +64 -0
  86. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  87. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  88. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  89. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IRewardsERC20.json +37 -1
  90. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  91. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.json +263 -0
  92. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  93. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +344 -0
  94. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  95. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  96. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  97. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  98. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  99. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  100. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +4 -0
  101. package/src/assets/ethereum/{ABI/liqEth/RewardsERC20Pausable.sol/RewardsERC20Pausable.json → hoodi/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.json} +140 -78
  102. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +4 -0
  103. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +937 -0
  104. package/src/assets/ethereum/hoodi/liqEth/v1/accounting.sol/Accounting.dbg.json +4 -0
  105. package/src/assets/ethereum/hoodi/liqEth/v1/accounting.sol/Accounting.json +548 -0
  106. package/src/assets/ethereum/hoodi/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +4 -0
  107. package/src/assets/ethereum/hoodi/liqEth/v1/liqEth.sol/LiqEthToken.json +1233 -0
  108. package/src/assets/ethereum/hoodi/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +4 -0
  109. package/src/assets/ethereum/hoodi/liqEth/v1/stakingModule.sol/StakingModule.json +1772 -0
  110. package/src/assets/ethereum/hoodi/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
  111. package/src/assets/ethereum/hoodi/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +973 -0
  112. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
  113. package/src/assets/ethereum/{ABI → hoodi}/liqEth/withdrawalVault.sol/Uint64BE.json +2 -2
  114. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
  115. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/WithdrawalVault.json +441 -0
  116. package/src/assets/ethereum/hoodi/outpost/BAR.sol/BAR.dbg.json +4 -0
  117. package/src/assets/ethereum/hoodi/outpost/BAR.sol/BAR.json +1111 -0
  118. package/src/assets/ethereum/hoodi/outpost/Depositor.sol/Depositor.dbg.json +4 -0
  119. package/src/assets/ethereum/hoodi/outpost/Depositor.sol/Depositor.json +1696 -0
  120. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +4 -0
  121. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +4 -0
  122. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +274 -0
  123. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.dbg.json +4 -0
  124. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.json +10 -0
  125. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.dbg.json +4 -0
  126. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.json +10 -0
  127. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.dbg.json +4 -0
  128. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.json +10 -0
  129. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.dbg.json +4 -0
  130. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.json +10 -0
  131. package/src/assets/ethereum/hoodi/outpost/LiqEthBridge.sol/LiqEthBridge.dbg.json +4 -0
  132. package/src/assets/ethereum/hoodi/outpost/LiqEthBridge.sol/LiqEthBridge.json +1044 -0
  133. package/src/assets/ethereum/hoodi/outpost/OPP.sol/OPP.dbg.json +4 -0
  134. package/src/assets/ethereum/hoodi/outpost/OPP.sol/OPP.json +1055 -0
  135. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPP.dbg.json +4 -0
  136. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPP.json +81 -0
  137. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +4 -0
  138. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPInbound.dbg.json +4 -0
  139. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPInbound.json +330 -0
  140. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +4 -0
  141. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPReceiver.json +29 -0
  142. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPSender.dbg.json +4 -0
  143. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPSender.json +41 -0
  144. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/OPPCommon.dbg.json +4 -0
  145. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/OPPCommon.json +287 -0
  146. package/src/assets/ethereum/hoodi/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +4 -0
  147. package/src/assets/ethereum/hoodi/outpost/OPPEndpoint.sol/OPPEndpoint.json +294 -0
  148. package/src/assets/ethereum/hoodi/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +4 -0
  149. package/src/assets/ethereum/hoodi/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +415 -0
  150. package/src/assets/ethereum/hoodi/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +4 -0
  151. package/src/assets/ethereum/hoodi/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +399 -0
  152. package/src/assets/ethereum/hoodi/outpost/OPPErrors.sol/OPPErrors.dbg.json +4 -0
  153. package/src/assets/ethereum/hoodi/outpost/OPPErrors.sol/OPPErrors.json +245 -0
  154. package/src/assets/ethereum/hoodi/outpost/OPPInbound.sol/OPPInbound.dbg.json +4 -0
  155. package/src/assets/ethereum/hoodi/outpost/OPPInbound.sol/OPPInbound.json +1204 -0
  156. package/src/assets/ethereum/hoodi/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +4 -0
  157. package/src/assets/ethereum/hoodi/outpost/OPPReceiver.sol/OPPReceiver.json +312 -0
  158. package/src/assets/ethereum/hoodi/outpost/OPPSender.sol/OPPSender.dbg.json +4 -0
  159. package/src/assets/ethereum/hoodi/outpost/OPPSender.sol/OPPSender.json +324 -0
  160. package/src/assets/ethereum/hoodi/outpost/OperatorRegistry.sol/OperatorRegistry.dbg.json +4 -0
  161. package/src/assets/ethereum/hoodi/outpost/OperatorRegistry.sol/OperatorRegistry.json +1068 -0
  162. package/src/assets/ethereum/hoodi/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +4 -0
  163. package/src/assets/ethereum/hoodi/outpost/OutpostErrors.sol/OutpostErrors.json +211 -0
  164. package/src/assets/ethereum/hoodi/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +4 -0
  165. package/src/assets/ethereum/hoodi/outpost/OutpostManaged.sol/OutpostManaged.json +229 -0
  166. package/src/assets/ethereum/hoodi/outpost/OutpostManager.sol/OutpostManager.dbg.json +4 -0
  167. package/src/assets/ethereum/hoodi/outpost/OutpostManager.sol/OutpostManager.json +751 -0
  168. package/src/assets/ethereum/hoodi/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +4 -0
  169. package/src/assets/ethereum/hoodi/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +1432 -0
  170. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +4 -0
  171. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostManager.json +130 -0
  172. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +4 -0
  173. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +4 -0
  174. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +141 -0
  175. package/src/assets/ethereum/hoodi/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +4 -0
  176. package/src/assets/ethereum/hoodi/outpost/OutpostOwnable.sol/OutpostOwnable.json +213 -0
  177. package/src/assets/ethereum/hoodi/outpost/OutpostReserve.sol/OutpostReserve.dbg.json +4 -0
  178. package/src/assets/ethereum/hoodi/outpost/OutpostReserve.sol/OutpostReserve.json +888 -0
  179. package/src/assets/ethereum/hoodi/outpost/Pool.sol/Pool.dbg.json +4 -0
  180. package/src/assets/ethereum/hoodi/outpost/Pool.sol/Pool.json +659 -0
  181. package/src/assets/ethereum/hoodi/outpost/Pretoken.sol/Pretoken.dbg.json +4 -0
  182. package/src/assets/ethereum/hoodi/outpost/Pretoken.sol/Pretoken.json +1393 -0
  183. package/src/assets/ethereum/hoodi/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +4 -0
  184. package/src/assets/ethereum/hoodi/outpost/ReceiptNFT.sol/ReceiptNFT.json +1738 -0
  185. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.dbg.json +4 -0
  186. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.json +10 -0
  187. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.dbg.json +4 -0
  188. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.json +10 -0
  189. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.dbg.json +4 -0
  190. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.json +10 -0
  191. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.dbg.json +4 -0
  192. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.json +10 -0
  193. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.dbg.json +4 -0
  194. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.json +10 -0
  195. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.dbg.json +4 -0
  196. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.json +10 -0
  197. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.dbg.json +4 -0
  198. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.json +10 -0
  199. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.dbg.json +4 -0
  200. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.json +10 -0
  201. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.dbg.json +4 -0
  202. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.json +10 -0
  203. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.dbg.json +4 -0
  204. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.json +10 -0
  205. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.dbg.json +4 -0
  206. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.json +1437 -0
  207. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.dbg.json +4 -0
  208. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.json +10 -0
  209. package/src/assets/ethereum/hoodi/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +4 -0
  210. package/src/assets/ethereum/hoodi/outpost/interfaces/IPretoken.sol/IPretoken.json +29 -0
  211. package/src/assets/ethereum/hoodi/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +4 -0
  212. package/src/assets/ethereum/hoodi/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +4 -0
  213. package/src/assets/ethereum/hoodi/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +4 -0
  214. package/src/assets/ethereum/hoodi/token/ERC1155Token.sol/ERC1155Token.dbg.json +4 -0
  215. package/src/assets/ethereum/hoodi/token/ERC1155Token.sol/ERC1155Token.json +472 -0
  216. package/src/assets/ethereum/hoodi/token/ERC20Token.sol/ERC20Token.dbg.json +4 -0
  217. package/src/assets/ethereum/hoodi/token/ERC20Token.sol/ERC20Token.json +330 -0
  218. package/src/assets/ethereum/hoodi/token/ERC721Token.sol/ERC721Token.dbg.json +4 -0
  219. package/src/assets/ethereum/hoodi/token/ERC721Token.sol/ERC721Token.json +449 -0
  220. package/src/assets/ethereum/hoodi/token/Eman1155.sol/Eman1155.dbg.json +4 -0
  221. package/src/assets/ethereum/hoodi/token/Eman1155.sol/Eman1155.json +560 -0
  222. package/src/assets/ethereum/hoodi/token/Eman20.sol/Eman20.dbg.json +4 -0
  223. package/src/assets/ethereum/hoodi/token/Eman20.sol/Eman20.json +460 -0
  224. package/src/assets/ethereum/hoodi/token/Eman721.sol/Eman721.dbg.json +4 -0
  225. package/src/assets/ethereum/hoodi/token/Eman721.sol/Eman721.json +624 -0
  226. package/src/assets/ethereum/mainnet/common/Base58.sol/Base58.dbg.json +4 -0
  227. package/src/assets/ethereum/mainnet/common/Base58.sol/Base58.json +164 -0
  228. package/src/assets/ethereum/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.dbg.json +4 -0
  229. package/src/assets/ethereum/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.json +76 -0
  230. package/src/assets/ethereum/mainnet/common/RestrictedCallers.sol/RestrictedCallers.dbg.json +4 -0
  231. package/src/assets/ethereum/mainnet/common/RestrictedCallers.sol/RestrictedCallers.json +10 -0
  232. package/src/assets/ethereum/mainnet/common/iodata.sol/iodata.dbg.json +4 -0
  233. package/src/assets/ethereum/mainnet/common/iodata.sol/iodata.json +618 -0
  234. package/src/assets/ethereum/mainnet/common/iodata_util.sol/iodata_util.dbg.json +4 -0
  235. package/src/assets/ethereum/mainnet/common/iodata_util.sol/iodata_util.json +40 -0
  236. package/src/assets/ethereum/mainnet/common/sysio_data.sol/sysio_data.dbg.json +4 -0
  237. package/src/assets/ethereum/mainnet/common/sysio_data.sol/sysio_data.json +10 -0
  238. package/src/assets/ethereum/mainnet/common/sysio_errors.sol/sysio_errors.dbg.json +4 -0
  239. package/src/assets/ethereum/mainnet/common/sysio_errors.sol/sysio_errors.json +10 -0
  240. package/src/assets/ethereum/mainnet/common/sysio_merkle.sol/sysio_merkle.dbg.json +4 -0
  241. package/src/assets/ethereum/mainnet/common/sysio_merkle.sol/sysio_merkle.json +233 -0
  242. package/src/assets/ethereum/mainnet/common/sysio_name.sol/sysio_name.dbg.json +4 -0
  243. package/src/assets/ethereum/mainnet/common/sysio_name.sol/sysio_name.json +49 -0
  244. package/src/assets/ethereum/mainnet/common/sysio_pubkey.sol/sysio_pubkey.dbg.json +4 -0
  245. package/src/assets/ethereum/mainnet/common/sysio_pubkey.sol/sysio_pubkey.json +64 -0
  246. package/src/assets/ethereum/mainnet/common/sysio_read.sol/sysio_read.dbg.json +4 -0
  247. package/src/assets/ethereum/mainnet/common/sysio_read.sol/sysio_read.json +1458 -0
  248. package/src/assets/ethereum/mainnet/common/sysio_tester.sol/SysioTester.dbg.json +4 -0
  249. package/src/assets/ethereum/mainnet/common/sysio_tester.sol/SysioTester.json +1532 -0
  250. package/src/assets/ethereum/mainnet/common/sysio_verify.sol/sysio_verify.dbg.json +4 -0
  251. package/src/assets/ethereum/mainnet/common/sysio_verify.sol/sysio_verify.json +1525 -0
  252. package/src/assets/ethereum/mainnet/common/sysio_write.sol/sysio_write.dbg.json +4 -0
  253. package/src/assets/ethereum/mainnet/common/sysio_write.sol/sysio_write.json +1076 -0
  254. package/src/assets/ethereum/mainnet/liqEth/BeaconState.sol/BeaconState.dbg.json +4 -0
  255. package/src/assets/ethereum/mainnet/liqEth/BeaconState.sol/BeaconState.json +807 -0
  256. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/DepositManagerV2.dbg.json +4 -0
  257. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/DepositManagerV2.json +1004 -0
  258. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.dbg.json +4 -0
  259. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.json +29 -0
  260. package/src/assets/ethereum/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.dbg.json +4 -0
  261. package/src/assets/ethereum/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.json +897 -0
  262. package/src/assets/ethereum/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +4 -0
  263. package/src/assets/ethereum/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +1289 -0
  264. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  265. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.json +39 -0
  266. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  267. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.json +64 -0
  268. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.dbg.json +4 -0
  269. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.json +189 -0
  270. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  271. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  272. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  273. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.json +319 -0
  274. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  275. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +333 -0
  276. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  277. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.json +279 -0
  278. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  279. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  280. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  281. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  282. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  283. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  284. package/src/assets/ethereum/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +4 -0
  285. package/src/assets/ethereum/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +236 -0
  286. package/src/assets/ethereum/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +4 -0
  287. package/src/assets/ethereum/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.json +229 -0
  288. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +4 -0
  289. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +957 -0
  290. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +4 -0
  291. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +1020 -0
  292. package/src/assets/ethereum/mainnet/liqEth/StakingLib.sol/StakingLib.dbg.json +4 -0
  293. package/src/assets/ethereum/mainnet/liqEth/StakingLib.sol/StakingLib.json +89 -0
  294. package/src/assets/ethereum/mainnet/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
  295. package/src/assets/ethereum/mainnet/liqEth/Yield.sol/YieldOracle.json +1376 -0
  296. package/src/assets/ethereum/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +4 -0
  297. package/src/assets/ethereum/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.json +1323 -0
  298. package/src/assets/ethereum/mainnet/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +4 -0
  299. package/src/assets/ethereum/mainnet/liqEth/stakingModule.sol/StakingModuleV2.json +1896 -0
  300. package/src/assets/ethereum/mainnet/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +4 -0
  301. package/src/assets/ethereum/mainnet/liqEth/v1/DepositManager.sol/DepositManager.json +978 -0
  302. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  303. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.json +176 -0
  304. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  305. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +39 -0
  306. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  307. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +64 -0
  308. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  309. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  310. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  311. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.json +249 -0
  312. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  313. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.json +263 -0
  314. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  315. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +344 -0
  316. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  317. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  318. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  319. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  320. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  321. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  322. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +4 -0
  323. package/src/assets/ethereum/{ABI/liqEth/RewardsERC20.sol/RewardsERC20.json → mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.json} +159 -34
  324. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +4 -0
  325. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +937 -0
  326. package/src/assets/ethereum/mainnet/liqEth/v1/accounting.sol/Accounting.dbg.json +4 -0
  327. package/src/assets/ethereum/mainnet/liqEth/v1/accounting.sol/Accounting.json +542 -0
  328. package/src/assets/ethereum/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +4 -0
  329. package/src/assets/ethereum/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.json +1233 -0
  330. package/src/assets/ethereum/mainnet/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +4 -0
  331. package/src/assets/ethereum/mainnet/liqEth/v1/stakingModule.sol/StakingModule.json +1772 -0
  332. package/src/assets/ethereum/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
  333. package/src/assets/ethereum/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +973 -0
  334. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
  335. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/Uint64BE.json +10 -0
  336. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
  337. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.json +441 -0
  338. package/src/assets/ethereum/mainnet/outpost/BAR.sol/BARV2.dbg.json +4 -0
  339. package/src/assets/ethereum/mainnet/outpost/BAR.sol/BARV2.json +1915 -0
  340. package/src/assets/ethereum/mainnet/outpost/Depositor.sol/DepositorV2.dbg.json +4 -0
  341. package/src/assets/ethereum/mainnet/outpost/Depositor.sol/DepositorV2.json +1845 -0
  342. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +4 -0
  343. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +122 -0
  344. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +4 -0
  345. package/src/assets/ethereum/{ABI → mainnet}/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +31 -81
  346. package/src/assets/ethereum/mainnet/outpost/OPP.sol/OPP.dbg.json +4 -0
  347. package/src/assets/ethereum/mainnet/outpost/OPP.sol/OPP.json +948 -0
  348. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPP.dbg.json +4 -0
  349. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +4 -0
  350. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.json +29 -0
  351. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPInbound.dbg.json +4 -0
  352. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +4 -0
  353. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPSender.dbg.json +4 -0
  354. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/OPPCommon.dbg.json +4 -0
  355. package/src/assets/ethereum/mainnet/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +4 -0
  356. package/src/assets/ethereum/mainnet/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +4 -0
  357. package/src/assets/ethereum/mainnet/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +4 -0
  358. package/src/assets/ethereum/mainnet/outpost/OPPErrors.sol/OPPErrors.dbg.json +4 -0
  359. package/src/assets/ethereum/mainnet/outpost/OPPInbound.sol/OPPInbound.dbg.json +4 -0
  360. package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPInbound.sol/OPPInbound.json +2 -2
  361. package/src/assets/ethereum/mainnet/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +4 -0
  362. package/src/assets/ethereum/mainnet/outpost/OPPSender.sol/OPPSender.dbg.json +4 -0
  363. package/src/assets/ethereum/mainnet/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +4 -0
  364. package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostErrors.sol/OutpostErrors.json +33 -18
  365. package/src/assets/ethereum/mainnet/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +4 -0
  366. package/src/assets/ethereum/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.dbg.json +4 -0
  367. package/src/assets/ethereum/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.json +737 -0
  368. package/src/assets/ethereum/mainnet/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +4 -0
  369. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +4 -0
  370. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +4 -0
  371. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +29 -0
  372. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +4 -0
  373. package/src/assets/ethereum/mainnet/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +4 -0
  374. package/src/assets/ethereum/mainnet/outpost/Pool.sol/PoolV2.dbg.json +4 -0
  375. package/src/assets/ethereum/mainnet/outpost/Pool.sol/PoolV2.json +943 -0
  376. package/src/assets/ethereum/mainnet/outpost/Pretoken.sol/PretokenV2.dbg.json +4 -0
  377. package/src/assets/ethereum/mainnet/outpost/Pretoken.sol/PretokenV2.json +1703 -0
  378. package/src/assets/ethereum/mainnet/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +4 -0
  379. package/src/assets/ethereum/mainnet/outpost/ReceiptNFT.sol/ReceiptNFT.json +2015 -0
  380. package/src/assets/ethereum/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +4 -0
  381. package/src/assets/ethereum/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.json +29 -0
  382. package/src/assets/ethereum/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +4 -0
  383. package/src/assets/ethereum/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.json +29 -0
  384. package/src/assets/ethereum/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +4 -0
  385. package/src/assets/ethereum/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +858 -0
  386. package/src/assets/ethereum/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +4 -0
  387. package/src/assets/ethereum/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +30 -0
  388. package/src/assets/ethereum/mainnet/outpost/v1/BAR.sol/BAR.dbg.json +4 -0
  389. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/BAR.sol/BAR.json +34 -19
  390. package/src/assets/ethereum/mainnet/outpost/v1/Depositor.sol/Depositor.dbg.json +4 -0
  391. package/src/assets/ethereum/mainnet/outpost/v1/Depositor.sol/Depositor.json +1653 -0
  392. package/src/assets/ethereum/mainnet/outpost/v1/OutpostManager.sol/OutpostManager.dbg.json +4 -0
  393. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/OutpostManager.sol/OutpostManager.json +3 -3
  394. package/src/assets/ethereum/mainnet/outpost/v1/Pool.sol/Pool.dbg.json +4 -0
  395. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/Pool.sol/Pool.json +34 -19
  396. package/src/assets/ethereum/mainnet/outpost/v1/Pretoken.sol/Pretoken.dbg.json +4 -0
  397. package/src/assets/ethereum/mainnet/outpost/v1/Pretoken.sol/Pretoken.json +1665 -0
  398. package/src/assets/ethereum/mainnet/token/ERC1155Token.sol/ERC1155Token.dbg.json +4 -0
  399. package/src/assets/ethereum/mainnet/token/ERC1155Token.sol/ERC1155Token.json +472 -0
  400. package/src/assets/ethereum/mainnet/token/ERC20Token.sol/ERC20Token.dbg.json +4 -0
  401. package/src/assets/ethereum/mainnet/token/ERC20Token.sol/ERC20Token.json +330 -0
  402. package/src/assets/ethereum/mainnet/token/ERC721Token.sol/ERC721Token.dbg.json +4 -0
  403. package/src/assets/ethereum/mainnet/token/ERC721Token.sol/ERC721Token.json +449 -0
  404. package/src/assets/solana/devnet/idl/liqsol_core.json +8566 -0
  405. package/src/assets/solana/{idl → devnet/idl}/liqsol_token.json +35 -1
  406. package/src/assets/solana/devnet/idl/transfer_hook.json +490 -0
  407. package/src/assets/solana/devnet/idl/validator_leaderboard.json +735 -0
  408. package/src/assets/solana/devnet/types/liqsol_core.ts +8572 -0
  409. package/src/assets/solana/{types → devnet/types}/liqsol_token.ts +35 -1
  410. package/src/assets/solana/devnet/types/transfer_hook.ts +496 -0
  411. package/src/assets/solana/devnet/types/validator_leaderboard.ts +741 -0
  412. package/src/assets/solana/{idl → mainnet/idl}/liqsol_core.json +3816 -1567
  413. package/src/assets/solana/mainnet/idl/liqsol_token.json +217 -0
  414. package/src/assets/solana/mainnet/idl/transfer_hook.json +479 -0
  415. package/src/assets/solana/{idl → mainnet/idl}/validator_leaderboard.json +4 -4
  416. package/src/assets/solana/{types → mainnet/types}/liqsol_core.ts +3816 -1567
  417. package/src/assets/solana/mainnet/types/liqsol_token.ts +223 -0
  418. package/src/assets/solana/mainnet/types/transfer_hook.ts +485 -0
  419. package/src/assets/solana/{types → mainnet/types}/validator_leaderboard.ts +4 -4
  420. package/src/assets/solana/realdevnet/idl/liqsol_core.json +7112 -0
  421. package/src/assets/solana/realdevnet/idl/liqsol_token.json +217 -0
  422. package/src/assets/solana/realdevnet/idl/transfer_hook.json +479 -0
  423. package/src/assets/solana/realdevnet/idl/validator_leaderboard.json +735 -0
  424. package/src/assets/solana/realdevnet/types/liqsol_core.ts +7118 -0
  425. package/src/assets/solana/realdevnet/types/liqsol_token.ts +223 -0
  426. package/src/assets/solana/realdevnet/types/transfer_hook.ts +485 -0
  427. package/src/assets/solana/realdevnet/types/validator_leaderboard.ts +741 -0
  428. package/src/index.ts +2 -2
  429. package/src/networks/ethereum/clients/convert.client.ts +221 -0
  430. package/src/networks/ethereum/clients/opp.client.ts +389 -0
  431. package/src/networks/ethereum/clients/pretoken.client.ts +165 -0
  432. package/src/networks/ethereum/clients/receipt.client.ts +199 -0
  433. package/src/networks/ethereum/clients/stake.client.ts +110 -122
  434. package/src/networks/ethereum/clients/validator.client.ts +61 -0
  435. package/src/networks/ethereum/contract.ts +424 -165
  436. package/src/networks/ethereum/ethereum.ts +505 -172
  437. package/src/networks/ethereum/types.ts +71 -30
  438. package/src/networks/ethereum/utils.ts +340 -0
  439. package/src/networks/solana/clients/convert.client.ts +341 -0
  440. package/src/networks/solana/clients/distribution.client.ts +269 -263
  441. package/src/networks/solana/clients/leaderboard.client.ts +68 -26
  442. package/src/networks/solana/clients/outpost.client.ts +224 -357
  443. package/src/networks/solana/clients/token.client.ts +96 -107
  444. package/src/networks/solana/constants.ts +88 -216
  445. package/src/networks/solana/program.ts +432 -28
  446. package/src/networks/solana/solana.ts +1070 -399
  447. package/src/networks/solana/types.ts +688 -75
  448. package/src/networks/solana/utils.ts +160 -359
  449. package/src/staker.ts +25 -4
  450. package/src/types.ts +261 -40
  451. package/src/assets/ethereum/ABI/liqEth/DepositManager.sol/DepositManager.dbg.json +0 -4
  452. package/src/assets/ethereum/ABI/liqEth/DepositManager.sol/DepositManager.json +0 -1114
  453. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +0 -4
  454. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +0 -4
  455. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +0 -4
  456. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +0 -4
  457. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +0 -4
  458. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IStakingModule.json +0 -118
  459. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +0 -4
  460. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +0 -4
  461. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +0 -4
  462. package/src/assets/ethereum/ABI/liqEth/RewardsERC20.sol/RewardsERC20.dbg.json +0 -4
  463. package/src/assets/ethereum/ABI/liqEth/RewardsERC20Pausable.sol/RewardsERC20Pausable.dbg.json +0 -4
  464. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/BeaconRoots.dbg.json +0 -4
  465. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/BeaconRoots.json +0 -10
  466. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZ.dbg.json +0 -4
  467. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZ.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 -225
  470. package/src/assets/ethereum/ABI/liqEth/Yield.sol/BeaconRoots.dbg.json +0 -4
  471. package/src/assets/ethereum/ABI/liqEth/Yield.sol/BeaconRoots.json +0 -10
  472. package/src/assets/ethereum/ABI/liqEth/Yield.sol/SSZ.dbg.json +0 -4
  473. package/src/assets/ethereum/ABI/liqEth/Yield.sol/SSZ.json +0 -10
  474. package/src/assets/ethereum/ABI/liqEth/Yield.sol/YieldOracle.dbg.json +0 -4
  475. package/src/assets/ethereum/ABI/liqEth/Yield.sol/YieldOracle.json +0 -813
  476. package/src/assets/ethereum/ABI/liqEth/accounting.sol/Accounting.dbg.json +0 -4
  477. package/src/assets/ethereum/ABI/liqEth/accounting.sol/Accounting.json +0 -573
  478. package/src/assets/ethereum/ABI/liqEth/liqEth.sol/LiqEthToken.dbg.json +0 -4
  479. package/src/assets/ethereum/ABI/liqEth/liqEth.sol/LiqEthToken.json +0 -1087
  480. package/src/assets/ethereum/ABI/liqEth/stakingModule.sol/StakingModule.dbg.json +0 -4
  481. package/src/assets/ethereum/ABI/liqEth/stakingModule.sol/StakingModule.json +0 -1183
  482. package/src/assets/ethereum/ABI/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +0 -4
  483. package/src/assets/ethereum/ABI/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +0 -927
  484. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +0 -4
  485. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +0 -4
  486. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/WithdrawalVault.json +0 -447
  487. package/src/assets/ethereum/ABI/outpost/BAR.sol/BAR.dbg.json +0 -4
  488. package/src/assets/ethereum/ABI/outpost/Depositor.sol/Depositor.dbg.json +0 -4
  489. package/src/assets/ethereum/ABI/outpost/Depositor.sol/Depositor.json +0 -1753
  490. package/src/assets/ethereum/ABI/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +0 -4
  491. package/src/assets/ethereum/ABI/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +0 -4
  492. package/src/assets/ethereum/ABI/outpost/OPP.sol/OPP.dbg.json +0 -4
  493. package/src/assets/ethereum/ABI/outpost/OPP.sol/OPP.json +0 -930
  494. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPP.dbg.json +0 -4
  495. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +0 -4
  496. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPInbound.dbg.json +0 -4
  497. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +0 -4
  498. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPSender.dbg.json +0 -4
  499. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/OPPCommon.dbg.json +0 -4
  500. package/src/assets/ethereum/ABI/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +0 -4
  501. package/src/assets/ethereum/ABI/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +0 -4
  502. package/src/assets/ethereum/ABI/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +0 -4
  503. package/src/assets/ethereum/ABI/outpost/OPPErrors.sol/OPPErrors.dbg.json +0 -4
  504. package/src/assets/ethereum/ABI/outpost/OPPInbound.sol/OPPInbound.dbg.json +0 -4
  505. package/src/assets/ethereum/ABI/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +0 -4
  506. package/src/assets/ethereum/ABI/outpost/OPPSender.sol/OPPSender.dbg.json +0 -4
  507. package/src/assets/ethereum/ABI/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +0 -4
  508. package/src/assets/ethereum/ABI/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +0 -4
  509. package/src/assets/ethereum/ABI/outpost/OutpostManager.sol/OutpostManager.dbg.json +0 -4
  510. package/src/assets/ethereum/ABI/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +0 -4
  511. package/src/assets/ethereum/ABI/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +0 -4
  512. package/src/assets/ethereum/ABI/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +0 -4
  513. package/src/assets/ethereum/ABI/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +0 -4
  514. package/src/assets/ethereum/ABI/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +0 -4
  515. package/src/assets/ethereum/ABI/outpost/Pool.sol/Pool.dbg.json +0 -4
  516. package/src/assets/ethereum/ABI/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +0 -4
  517. package/src/assets/ethereum/ABI/outpost/ReceiptNFT.sol/ReceiptNFT.json +0 -2020
  518. package/src/assets/ethereum/ABI/outpost/Warrant.sol/Warrant.dbg.json +0 -4
  519. package/src/assets/ethereum/ABI/outpost/Warrant.sol/Warrant.json +0 -1650
  520. package/src/assets/ethereum/ABI/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +0 -4
  521. package/src/assets/ethereum/ABI/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +0 -4
  522. package/src/assets/ethereum/ABI/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +0 -4
  523. package/src/assets/ethereum/ABI/token/ERC1155Token.sol/ERC1155Token.dbg.json +0 -4
  524. package/src/assets/ethereum/ABI/token/ERC1155Token.sol/ERC1155Token.json +0 -472
  525. package/src/assets/ethereum/ABI/token/ERC20Token.sol/ERC20Token.dbg.json +0 -4
  526. package/src/assets/ethereum/ABI/token/ERC20Token.sol/ERC20Token.json +0 -330
  527. package/src/assets/ethereum/ABI/token/ERC721Token.sol/ERC721Token.dbg.json +0 -4
  528. package/src/assets/ethereum/ABI/token/ERC721Token.sol/ERC721Token.json +0 -449
  529. package/src/networks/ethereum/clients/deposit.client.ts +0 -82
  530. package/src/networks/solana/clients/deposit.client.ts +0 -127
  531. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IDepositContract.json +0 -0
  532. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IDepositManager.json +0 -0
  533. /package/src/assets/ethereum/{ABI → hoodi}/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +0 -0
  534. /package/src/assets/ethereum/{ABI → hoodi}/outpost/OPPCommon.sol/IOPPEndpoint.json +0 -0
  535. /package/src/assets/ethereum/{ABI → hoodi}/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +0 -0
  536. /package/src/assets/ethereum/{ABI → hoodi}/outpost/interfaces/IWarrant.sol/IWarrant.json +0 -0
  537. /package/src/assets/ethereum/{ABI → hoodi}/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +0 -0
  538. /package/src/assets/ethereum/{ABI → hoodi}/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +0 -0
  539. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPP.json +0 -0
  540. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPInbound.json +0 -0
  541. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPReceiver.json +0 -0
  542. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPSender.json +0 -0
  543. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/OPPCommon.json +0 -0
  544. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpoint.sol/OPPEndpoint.json +0 -0
  545. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +0 -0
  546. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +0 -0
  547. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPErrors.sol/OPPErrors.json +0 -0
  548. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPReceiver.sol/OPPReceiver.json +0 -0
  549. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPSender.sol/OPPSender.json +0 -0
  550. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManaged.sol/OutpostManaged.json +0 -0
  551. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +0 -0
  552. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/IOutpostManager.json +0 -0
  553. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +0 -0
  554. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostOwnable.sol/OutpostOwnable.json +0 -0
@@ -1,42 +1,69 @@
1
1
  import { BigNumber, ethers } from 'ethers';
2
- import { IStakingClient, Portfolio, PurchaseAsset, PurchaseQuote, StakerConfig, TrancheSnapshot } from '../../types';
3
- import { PublicKey as WirePubKey } from '@wireio/core';
2
+ import { ChainID, EvmChainID, PublicKey as WirePubKey } from '@wireio/core';
3
+ import {
4
+ IStakingClient,
5
+ OPPAssertion,
6
+ Portfolio,
7
+ StakerConfig,
8
+ TrancheSnapshot
9
+ } from '../../types';
4
10
  import { EthereumContractService } from './contract';
5
- import { preLaunchReceipt, WithdrawRequestedEvent, WithdrawResult } from './types';
6
- import { DepositClient } from './clients/deposit.client';
11
+ import { preLaunchReceipt, WithdrawReceipt } from './types';
12
+ import { buildEthereumTrancheSnapshot } from './utils';
13
+ import { ConvertClient } from './clients/convert.client';
7
14
  import { StakeClient } from './clients/stake.client';
15
+ import { PretokenClient } from './clients/pretoken.client';
16
+ import { OPPClient } from './clients/opp.client';
17
+ import { ReceiptClient } from './clients/receipt.client';
18
+ import { ValidatorClient } from './clients/validator.client';
8
19
 
9
-
20
+ export const INITIAL_TRANCHE_SUPPLY = 35000;
10
21
 
11
22
  export class EthereumStakingClient implements IStakingClient {
12
- public readonly pubKey: WirePubKey;
13
- private readonly provider: ethers.providers.Web3Provider;
14
- private readonly signer: ethers.Signer;
23
+ private readonly provider: ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider;
24
+ public readonly pubKey?: WirePubKey;
25
+ private readonly signer?: ethers.Signer;
15
26
  private readonly contractService: EthereumContractService;
16
27
 
17
- private depositClient: DepositClient;
28
+ private convertClient: ConvertClient;
29
+ private pretokenClient: PretokenClient;
18
30
  private stakeClient: StakeClient;
31
+ private oppClient: OPPClient;
32
+ private receiptClient: ReceiptClient;
33
+ private validatorClient: ValidatorClient;
19
34
 
20
35
  get contract() { return this.contractService.contract; }
21
36
  get network() { return this.config.network; }
37
+ get address() { return this.signer?.getAddress(); }
22
38
 
23
39
  constructor(private config: StakerConfig) {
24
40
  try {
25
- this.provider = config.provider as ethers.providers.Web3Provider;
26
- this.signer = this.provider.getSigner();
27
- this.pubKey = config.pubKey as WirePubKey;
28
-
41
+ if (config.provider) {
42
+ this.provider = config.provider as ethers.providers.Web3Provider;
43
+ this.signer = this.provider.getSigner();
44
+ }
45
+ else {
46
+ this.provider = new ethers.providers.JsonRpcProvider(config.network.rpcUrls[0]);
47
+ }
48
+ this.pubKey = config.pubKey;
49
+
29
50
  this.contractService = new EthereumContractService({
30
51
  provider: this.provider,
31
52
  signer: this.signer,
53
+ chainId: config.network.chainId as EvmChainID,
32
54
  });
33
- this.depositClient = new DepositClient(this.contractService);
55
+
56
+ this.convertClient = new ConvertClient(this.contractService);
57
+ this.pretokenClient = new PretokenClient(this.contractService);
34
58
  this.stakeClient = new StakeClient(this.contractService);
35
- }
59
+ this.oppClient = new OPPClient(this.contractService);
60
+ this.receiptClient = new ReceiptClient(this.contractService);
61
+ this.validatorClient = new ValidatorClient(this.contractService)
62
+ }
36
63
  catch (error) {
37
64
  // console.error('Error initializing EthereumStakingClient:', error);
38
65
  throw error;
39
- }
66
+ }
40
67
  }
41
68
 
42
69
  // ---------------------------------------------------------------------
@@ -50,29 +77,66 @@ export class EthereumStakingClient implements IStakingClient {
50
77
  * @returns transaction hash
51
78
  */
52
79
  async deposit(amount: number | string | bigint | BigNumber): Promise<string> {
80
+ this.ensureUser();
81
+
53
82
  const amountWei = BigNumber.isBigNumber(amount)
54
83
  ? amount
55
84
  : BigNumber.from(amount);
56
85
 
57
- const result = await this.depositClient.performDeposit(amountWei);
86
+ const result = await this.convertClient.performDeposit(amountWei);
58
87
  return result.txHash;
59
88
  }
60
89
 
90
+ /**
91
+ * Withdraw native ETH from the liqETH protocol via the liqeth safeBurn function, which burns the LiqETH and adds the user to the withdrawal queue.
92
+ * @param amount Amount in wei (or something convertible to BigNumber).
93
+ * @returns transaction hash
94
+ */
95
+ async withdraw(amount: bigint): Promise<string> {
96
+ this.ensureUser();
61
97
 
62
- // TODO - In progress
63
- async withdraw(amount: number | string | bigint | BigNumber): Promise<string> {
64
- const amountWei = BigNumber.isBigNumber(amount)
65
- ? amount
66
- : BigNumber.from(amount);
98
+ const address = await this.address!;
99
+ const amountWei = BigNumber.from(amount);
67
100
 
68
- const result = await this.requestWithdraw(amountWei);
101
+ const result = await this.convertClient.performWithdraw(address, amountWei)
69
102
  return result.txHash;
70
103
  }
71
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
+ }
72
115
 
73
- // TODO - In progress
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
+
130
+
131
+ /**
132
+ * Stake liqETH via DepositManager.
133
+ * @param amount Amount in wei - Keep this as a bigint / string in the caller; avoid JS floats.
134
+ * @returns transaction hash
135
+ */
74
136
  async stake(amount: bigint): Promise<string> {
75
- const walletAddress = await this.signer.getAddress();
137
+ this.ensureUser();
138
+
139
+ const walletAddress = await this.address!;
76
140
  const amountWei = BigNumber.from(amount);
77
141
 
78
142
  const result = await this.stakeClient.performStake(amountWei, walletAddress);
@@ -85,46 +149,93 @@ export class EthereumStakingClient implements IStakingClient {
85
149
  throw new Error("Method not yet implemented.");
86
150
  }
87
151
 
88
- // TODO
89
- async unstakePrelaunch(tokenId: bigint, recipient: string): Promise<string> {
90
- const tokenIdBigNum = BigNumber.from(tokenId)
91
- const result = await this.stakeClient.performWithdrawStake(tokenIdBigNum, recipient);
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));
92
163
  return result.txHash;
93
164
  }
94
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.');
95
175
 
96
- async fetchPrelaunchReceipts(address?: string): Promise<preLaunchReceipt[]> {
97
- if(address === undefined) address = await this.signer.getAddress();
98
-
99
- let receipts = await this.stakeClient.fetchPreLaunchReceipts(address);
100
- return receipts
176
+ const result = await this.stakeClient.performDepositAndPurchase(BigNumber.from(amountWei));
177
+ return result.txHash;
101
178
  }
102
179
 
103
-
104
-
105
- async getEthStats(): Promise<any> {
106
- let withdrawDelay = await this.contract.DepositManager.withdrawDelay();
107
- let minDeposit = await this.contract.DepositManager.minDeposit();
108
- let rewardCooldown = await this.contract.DepositManager.rewardCooldown();
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();
109
187
 
110
- return {
111
- withdrawDelay,
112
- minDeposit,
113
- rewardCooldown,
114
- }
188
+ const result = await this.stakeClient.performUnstakeAndRequestWithdraw(BigNumber.from(tokenId));
189
+ return result.txHash;
115
190
  }
116
191
 
117
- // TODO
118
- buy(amount: bigint, purchaseAsset: PurchaseAsset): Promise<string> {
119
- throw new Error("Method not yet implemented.");
192
+
193
+ /**
194
+ * ETH Prelaunch function to unstake liqEth
195
+ * @param tokenId ReceiptNFT tokenId for the owned NFT that will be burned
196
+ * @param recipient Address to receive the liqEth funds linked to the burned NFT
197
+ * @returns the transaction hash
198
+ */
199
+ async unstakePrelaunch(tokenId: bigint, recipient: string): Promise<string> {
200
+ this.ensureUser();
201
+
202
+ const tokenIdBigNum = BigNumber.from(tokenId)
203
+ const result = await this.stakeClient.performWithdrawStake(tokenIdBigNum, recipient);
204
+ return result.txHash;
120
205
  }
121
206
 
122
- // TODO
123
- getBuyQuote(amount: bigint, purchaseAsset: PurchaseAsset): Promise<PurchaseQuote> {
124
- throw new Error("Method not yet implemented.");
207
+
208
+ async buy(amount: bigint): Promise<string> {
209
+ this.ensureUser();
210
+
211
+ const buyer = await this.address!;
212
+
213
+ // ! Hoodi only - check if the mock aggregator price is stale, and if so, update it before submitting the buy request
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();
218
+
219
+ let result = await this.pretokenClient.purchasePretokensWithLiqETH(amount, buyer);
220
+ return result && result.txHash ? result.txHash : "Error - no resulting txHash";
125
221
  }
126
222
 
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
+ }
127
233
 
234
+
235
+
236
+
237
+
238
+
128
239
  /**
129
240
  * Resolve the user's ETH + liqETH balances.
130
241
  *
@@ -132,140 +243,362 @@ export class EthereumStakingClient implements IStakingClient {
132
243
  * actual = liqETH token balance (ERC-20)
133
244
  * tracked = liqETH tracked balance (protocol/accounting view)
134
245
  */
135
- async getPortfolio(): Promise<Portfolio> {
136
- const walletAddress = await this.signer.getAddress();
137
- // console.log('getPortfolio() wallet address', walletAddress)
138
-
139
-
140
- // 1) Native ETH balance
141
- const nativeBalance = await this.provider.getBalance(walletAddress);
142
- const nativeDecimals = this.network?.nativeCurrency?.decimals ?? 18;
143
- const nativeSymbol = this.network?.nativeCurrency?.symbol ?? 'ETH';
144
-
145
- // 2) liqETH ERC-20 balance (actual)
146
- const liqBalance: ethers.BigNumber = await this.contract.LiqEth.balanceOf(walletAddress);
147
- const liqSymbol = 'Liq' + (this.network?.nativeCurrency?.symbol ?? 'ETH');
148
-
149
- // 3) staked liqEth ERC-20 balance (actual)
150
- const stakedLiqBalance = await this.contract.Depositor.sharesOf(walletAddress);
151
-
152
-
153
- const portfolio: Portfolio = {
154
- native: {
155
- amount: nativeBalance.toBigInt(),
156
- decimals: nativeDecimals,
157
- symbol: nativeSymbol,
158
- },
159
- liq: {
160
- amount: liqBalance.toBigInt(),
161
- decimals: nativeDecimals,
162
- symbol: liqSymbol,
163
- },
164
- tracked: {
165
- amount: liqBalance.toBigInt(),
166
- decimals: nativeDecimals,
167
- symbol: liqSymbol,
168
- },
169
- staked: {
170
- amount: stakedLiqBalance.toBigInt(),
171
- decimals: nativeDecimals,
172
- symbol: liqSymbol,
173
- },
174
- wire: {
175
- amount: BigInt(0), // TODO
176
- decimals: 0,
177
- symbol: '$WIRE',
178
- },
179
- chainID: this.network.chainId
246
+ async getPortfolio(address?: string): Promise<Portfolio | null> {
247
+
248
+ try {
249
+ if (!this.signer) return Promise.resolve(null);
250
+
251
+ const walletAddress = address ?? await this.address!;
252
+
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';
257
+
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');
261
+
262
+ // 3) staked liqEth ERC-20 balance (calculate from receipts)
263
+ let stakeReceipts = await this.receiptClient.stakeReceipts(walletAddress);
264
+
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
+ }
273
+
274
+ // 4) WIRE pretoken balance
275
+ const wireBalance: ethers.BigNumber = await this.contract.Pretoken.balanceOf(walletAddress);
276
+
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
+ }
307
+
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;
180
346
  }
181
- // console.log('ETH PORTFOLIO', portfolio);
182
- return portfolio;
183
347
  }
184
348
 
185
349
  /**
186
- * Program-level prelaunch WIRE / tranche snapshot for Solana.
187
- * Uses the same OutpostWireStateSnapshot primitive as getPortfolio().
188
- * TODO! for eth
350
+ * ETH Prelaunch function to list the Stake ReceiptNFTs owned by a specific user
351
+ * @param address address to query the receipts for
352
+ * @returns array of receipts
189
353
  */
190
- async getTrancheSnapshot(): Promise<TrancheSnapshot | null> {
191
- return null
354
+ async fetchPrelaunchReceipts(address?: string): Promise<preLaunchReceipt[]> {
355
+ this.ensureUser();
356
+
357
+ if (address === undefined) address = await this.address!;
358
+
359
+ //default to stake receipts
360
+ return await this.receiptClient.stakeReceipts(address);
192
361
  }
193
362
 
194
-
363
+ async getOPPMessages(address?: string): Promise<OPPAssertion[]> {
364
+ this.ensureUser();
365
+
366
+ if (!address) address = await this.address!;
367
+
368
+ return await this.oppClient.getMessages(address);
369
+ }
370
+
371
+
372
+
373
+ // Ensure that signer wallet is available for write operations
374
+ private ensureUser() {
375
+ if (!this.signer) {
376
+ throw new Error(
377
+ 'EthereumStakingClient: write operation requires a wallet-connected Web3 provider',
378
+ );
379
+ }
380
+ }
381
+
382
+
195
383
  // ---------------------------------------------------------------------
196
- // Internal ETH Staking client helper functions
384
+ // READ-ONLY Public Methods
197
385
  // ---------------------------------------------------------------------
198
386
 
199
- private async requestWithdraw(amountWei: BigNumber): Promise<WithdrawResult> {
200
- // deadline is a period of time in the future that the signature is valid for
201
- const deadline = Math.floor(Date.now() / 1000) + 3600;
202
- const liqEth = this.contract.LiqEth;
203
- const owner = await this.signer.getAddress();
204
- const liqEthAddress = this.contractService.getAddress('LiqEth');
205
-
206
- const nonce: BigNumber = await liqEth.nonces(owner);
207
- const chainId = this.network?.chainId ?? (await this.provider.getNetwork()).chainId;
208
- const domain = {
209
- name: await liqEth.name(),
210
- version: '1',
211
- chainId,
212
- verifyingContract: liqEthAddress,
213
- } as any;
214
-
215
- const types = {
216
- Permit: [
217
- { name: 'owner', type: 'address' },
218
- { name: 'spender', type: 'address' },
219
- { name: 'value', type: 'uint256' },
220
- { name: 'nonce', type: 'uint256' },
221
- { name: 'deadline', type: 'uint256' },
222
- ],
223
- } as any;
224
-
225
- const values = {
226
- owner,
227
- spender: this.contractService.getAddress('DepositManager'),
228
- value: amountWei,
229
- nonce: nonce,
230
- deadline,
231
- } as any;
232
-
233
- const signature = await (this.signer as any)._signTypedData(domain, types, values);
234
- const split = ethers.utils.splitSignature(signature);
235
-
236
- const tx = await this.contract.DepositManager.requestWithdrawal(
237
- amountWei,
238
- deadline,
239
- split.v,
240
- split.r,
241
- split.s
242
- );
243
-
244
- // wait for 1 confirmation
245
- const receipt = await tx.wait(1);
246
-
247
- // if WithdrawRequested event exists, parse it and get arguments
248
- let withdrawRequested: WithdrawRequestedEvent | undefined;
249
- const ev = receipt.events?.find((e) => e.event === 'WithdrawRequested');
250
-
251
- if (ev && ev.args) {
252
- const { user, ethAmount, nftId, readyAt } = ev.args;
253
- withdrawRequested = {
254
- user,
255
- ethAmount: BigNumber.from(ethAmount),
256
- nftId: BigNumber.from(nftId),
257
- readyAt: readyAt,
258
- };
259
- }
387
+ // Protocol-wide ETH staking APY in percent, e.g. 3.0 => "3.00%"
388
+ async getSystemAPY(): Promise<number> {
389
+ // NOTE: despite the name, this value is effectively *annual* BPS on-chain.
390
+ // e.g. 300 => 3% APY
391
+ const annualBpsBn = await this.contract.DepositManager.dailyRateBPS();
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%"
399
+ }
400
+
401
+ // Protocol fee charged for deposit from Native to LIQ
402
+ async getDepositFee(amountWei: bigint): Promise<bigint> {
403
+ const feeBn: BigNumber = await this.contract.DepositManager.procFee(amountWei);
404
+ return BigInt(feeBn.toString());
405
+ }
406
+
407
+ async getOPPStatus(): Promise<any> {
408
+ return await this.oppClient.getStatus();
409
+ }
410
+
411
+ async getEthStats(): Promise<any> {
412
+ let withdrawDelay = await this.contract.WithdrawalQueue.withdrawDelay();
413
+ let minDeposit = await this.contract.DepositManager.minDeposit();
414
+ let rewardCooldown = await this.contract.DepositManager.rewardCooldown();
260
415
 
261
416
  return {
262
- txHash: tx.hash,
263
- receipt,
264
- withdrawRequested,
265
- } as WithdrawResult;
417
+ withdrawDelay,
418
+ minDeposit,
419
+ rewardCooldown,
420
+ }
421
+ }
422
+
423
+ /**
424
+ * Program-level prelaunch WIRE / tranche snapshot for Ethereum
425
+ *
426
+ * SUPPORTS READ-ONLY ACcESS
427
+ */
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
+ }
266
481
  }
267
482
 
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();
502
+
503
+ const walletAddress = await this.address!;
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
+ });
512
+
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
519
+
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;
523
+
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;
549
+ }
550
+
551
+ return bufferWei;
552
+ }
268
553
 
554
+ // ---------------------------------------------------------------------
555
+ // Internal ETH Staking client helper functions
556
+ // ---------------------------------------------------------------------
269
557
 
270
- // TODO: implement claimRewards, etc.
271
- }
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
+ }