@wireio/stake 0.3.0 → 0.3.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 (557) hide show
  1. package/README.md +185 -243
  2. package/lib/stake.browser.js +58399 -13167
  3. package/lib/stake.browser.js.map +1 -1
  4. package/lib/stake.d.ts +16784 -3247
  5. package/lib/stake.js +59134 -13803
  6. package/lib/stake.js.map +1 -1
  7. package/lib/stake.m.js +58399 -13167
  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/DepositManager.sol/DepositManagerV2.dbg.json +4 -0
  40. package/src/assets/ethereum/hoodi/liqEth/DepositManager.sol/DepositManagerV2.json +985 -0
  41. package/src/assets/ethereum/hoodi/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +4 -0
  42. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  43. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IAccounting.json +182 -0
  44. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  45. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  46. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  47. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  48. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20.json +319 -0
  49. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  50. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +333 -0
  51. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  52. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IStakingModule.json +1 -1
  53. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  54. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  55. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  56. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/LiqEthCommon.json +2 -2
  57. package/src/assets/ethereum/hoodi/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +4 -0
  58. package/src/assets/ethereum/hoodi/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +236 -0
  59. package/src/assets/ethereum/hoodi/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +4 -0
  60. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthManaged.sol/LiqEthManaged.json +2 -2
  61. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +4 -0
  62. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +957 -0
  63. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +4 -0
  64. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +1020 -0
  65. package/src/assets/ethereum/hoodi/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
  66. package/src/assets/ethereum/{ABI → hoodi}/liqEth/Yield.sol/YieldOracle.json +2 -2
  67. package/src/assets/ethereum/hoodi/liqEth/accounting.sol/AccountingV2.dbg.json +4 -0
  68. package/src/assets/ethereum/hoodi/liqEth/accounting.sol/AccountingV2.json +629 -0
  69. package/src/assets/ethereum/hoodi/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +4 -0
  70. package/src/assets/ethereum/hoodi/liqEth/liqEth.sol/LiqEthTokenV2.json +1323 -0
  71. package/src/assets/ethereum/hoodi/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +4 -0
  72. package/src/assets/ethereum/hoodi/liqEth/stakingModule.sol/StakingModuleV2.json +1779 -0
  73. package/src/assets/ethereum/hoodi/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +4 -0
  74. package/src/assets/ethereum/hoodi/liqEth/v1/DepositManager.sol/DepositManager.json +978 -0
  75. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  76. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IAccounting.json +1 -1
  77. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  78. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +39 -0
  79. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  80. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +64 -0
  81. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  82. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  83. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  84. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IRewardsERC20.json +1 -1
  85. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  86. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IRewardsERC20Pausable.json +1 -1
  87. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  88. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +344 -0
  89. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  90. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  91. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  92. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  93. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  94. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  95. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +4 -0
  96. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/RewardsERC20.sol/RewardsERC20Upgradeable.json +1 -1
  97. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +4 -0
  98. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +1 -1
  99. package/src/assets/ethereum/hoodi/liqEth/v1/accounting.sol/Accounting.dbg.json +4 -0
  100. package/src/assets/ethereum/hoodi/liqEth/v1/accounting.sol/Accounting.json +548 -0
  101. package/src/assets/ethereum/hoodi/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +4 -0
  102. package/src/assets/ethereum/hoodi/liqEth/v1/liqEth.sol/LiqEthToken.json +1233 -0
  103. package/src/assets/ethereum/hoodi/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +4 -0
  104. package/src/assets/ethereum/hoodi/liqEth/v1/stakingModule.sol/StakingModule.json +1772 -0
  105. package/src/assets/ethereum/hoodi/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
  106. package/src/assets/ethereum/{ABI → hoodi}/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +2 -2
  107. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
  108. package/src/assets/ethereum/{ABI → hoodi}/liqEth/withdrawalVault.sol/Uint64BE.json +2 -2
  109. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
  110. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/WithdrawalVault.json +441 -0
  111. package/src/assets/ethereum/hoodi/outpost/BAR.sol/BAR.dbg.json +4 -0
  112. package/src/assets/ethereum/hoodi/outpost/BAR.sol/BAR.json +1111 -0
  113. package/src/assets/ethereum/hoodi/outpost/Depositor.sol/Depositor.dbg.json +4 -0
  114. package/src/assets/ethereum/hoodi/outpost/Depositor.sol/Depositor.json +1696 -0
  115. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +4 -0
  116. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +4 -0
  117. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +274 -0
  118. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.dbg.json +4 -0
  119. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.json +10 -0
  120. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.dbg.json +4 -0
  121. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.json +10 -0
  122. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.dbg.json +4 -0
  123. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.json +10 -0
  124. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.dbg.json +4 -0
  125. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.json +10 -0
  126. package/src/assets/ethereum/hoodi/outpost/LiqEthBridge.sol/LiqEthBridge.dbg.json +4 -0
  127. package/src/assets/ethereum/hoodi/outpost/LiqEthBridge.sol/LiqEthBridge.json +1044 -0
  128. package/src/assets/ethereum/hoodi/outpost/OPP.sol/OPP.dbg.json +4 -0
  129. package/src/assets/ethereum/hoodi/outpost/OPP.sol/OPP.json +1055 -0
  130. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPP.dbg.json +4 -0
  131. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPP.json +81 -0
  132. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +4 -0
  133. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPInbound.dbg.json +4 -0
  134. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPInbound.json +330 -0
  135. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +4 -0
  136. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPReceiver.json +29 -0
  137. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPSender.dbg.json +4 -0
  138. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPSender.json +41 -0
  139. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/OPPCommon.dbg.json +4 -0
  140. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/OPPCommon.json +287 -0
  141. package/src/assets/ethereum/hoodi/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +4 -0
  142. package/src/assets/ethereum/hoodi/outpost/OPPEndpoint.sol/OPPEndpoint.json +294 -0
  143. package/src/assets/ethereum/hoodi/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +4 -0
  144. package/src/assets/ethereum/hoodi/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +415 -0
  145. package/src/assets/ethereum/hoodi/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +4 -0
  146. package/src/assets/ethereum/hoodi/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +399 -0
  147. package/src/assets/ethereum/hoodi/outpost/OPPErrors.sol/OPPErrors.dbg.json +4 -0
  148. package/src/assets/ethereum/hoodi/outpost/OPPErrors.sol/OPPErrors.json +245 -0
  149. package/src/assets/ethereum/hoodi/outpost/OPPInbound.sol/OPPInbound.dbg.json +4 -0
  150. package/src/assets/ethereum/hoodi/outpost/OPPInbound.sol/OPPInbound.json +1204 -0
  151. package/src/assets/ethereum/hoodi/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +4 -0
  152. package/src/assets/ethereum/hoodi/outpost/OPPReceiver.sol/OPPReceiver.json +312 -0
  153. package/src/assets/ethereum/hoodi/outpost/OPPSender.sol/OPPSender.dbg.json +4 -0
  154. package/src/assets/ethereum/hoodi/outpost/OPPSender.sol/OPPSender.json +324 -0
  155. package/src/assets/ethereum/hoodi/outpost/OperatorRegistry.sol/OperatorRegistry.dbg.json +4 -0
  156. package/src/assets/ethereum/hoodi/outpost/OperatorRegistry.sol/OperatorRegistry.json +1068 -0
  157. package/src/assets/ethereum/hoodi/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +4 -0
  158. package/src/assets/ethereum/hoodi/outpost/OutpostErrors.sol/OutpostErrors.json +211 -0
  159. package/src/assets/ethereum/hoodi/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +4 -0
  160. package/src/assets/ethereum/hoodi/outpost/OutpostManaged.sol/OutpostManaged.json +229 -0
  161. package/src/assets/ethereum/hoodi/outpost/OutpostManager.sol/OutpostManager.dbg.json +4 -0
  162. package/src/assets/ethereum/hoodi/outpost/OutpostManager.sol/OutpostManager.json +751 -0
  163. package/src/assets/ethereum/hoodi/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +4 -0
  164. package/src/assets/ethereum/hoodi/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +1432 -0
  165. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +4 -0
  166. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostManager.json +130 -0
  167. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +4 -0
  168. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +4 -0
  169. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +141 -0
  170. package/src/assets/ethereum/hoodi/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +4 -0
  171. package/src/assets/ethereum/hoodi/outpost/OutpostOwnable.sol/OutpostOwnable.json +213 -0
  172. package/src/assets/ethereum/hoodi/outpost/OutpostReserve.sol/OutpostReserve.dbg.json +4 -0
  173. package/src/assets/ethereum/hoodi/outpost/OutpostReserve.sol/OutpostReserve.json +888 -0
  174. package/src/assets/ethereum/hoodi/outpost/Pool.sol/Pool.dbg.json +4 -0
  175. package/src/assets/ethereum/hoodi/outpost/Pool.sol/Pool.json +659 -0
  176. package/src/assets/ethereum/hoodi/outpost/Pretoken.sol/Pretoken.dbg.json +4 -0
  177. package/src/assets/ethereum/hoodi/outpost/Pretoken.sol/Pretoken.json +1393 -0
  178. package/src/assets/ethereum/hoodi/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +4 -0
  179. package/src/assets/ethereum/hoodi/outpost/ReceiptNFT.sol/ReceiptNFT.json +1738 -0
  180. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.dbg.json +4 -0
  181. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.json +10 -0
  182. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.dbg.json +4 -0
  183. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.json +10 -0
  184. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.dbg.json +4 -0
  185. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.json +10 -0
  186. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.dbg.json +4 -0
  187. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.json +10 -0
  188. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.dbg.json +4 -0
  189. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.json +10 -0
  190. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.dbg.json +4 -0
  191. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.json +10 -0
  192. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.dbg.json +4 -0
  193. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.json +10 -0
  194. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.dbg.json +4 -0
  195. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.json +10 -0
  196. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.dbg.json +4 -0
  197. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.json +10 -0
  198. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.dbg.json +4 -0
  199. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.json +10 -0
  200. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.dbg.json +4 -0
  201. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.json +1437 -0
  202. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.dbg.json +4 -0
  203. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.json +10 -0
  204. package/src/assets/ethereum/hoodi/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +4 -0
  205. package/src/assets/ethereum/hoodi/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +4 -0
  206. package/src/assets/ethereum/hoodi/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +4 -0
  207. package/src/assets/ethereum/hoodi/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +4 -0
  208. package/src/assets/ethereum/hoodi/token/ERC1155Token.sol/ERC1155Token.dbg.json +4 -0
  209. package/src/assets/ethereum/hoodi/token/ERC1155Token.sol/ERC1155Token.json +472 -0
  210. package/src/assets/ethereum/hoodi/token/ERC20Token.sol/ERC20Token.dbg.json +4 -0
  211. package/src/assets/ethereum/hoodi/token/ERC20Token.sol/ERC20Token.json +330 -0
  212. package/src/assets/ethereum/hoodi/token/ERC721Token.sol/ERC721Token.dbg.json +4 -0
  213. package/src/assets/ethereum/hoodi/token/ERC721Token.sol/ERC721Token.json +449 -0
  214. package/src/assets/ethereum/hoodi/token/Eman1155.sol/Eman1155.dbg.json +4 -0
  215. package/src/assets/ethereum/hoodi/token/Eman1155.sol/Eman1155.json +560 -0
  216. package/src/assets/ethereum/hoodi/token/Eman20.sol/Eman20.dbg.json +4 -0
  217. package/src/assets/ethereum/hoodi/token/Eman20.sol/Eman20.json +460 -0
  218. package/src/assets/ethereum/hoodi/token/Eman721.sol/Eman721.dbg.json +4 -0
  219. package/src/assets/ethereum/hoodi/token/Eman721.sol/Eman721.json +624 -0
  220. package/src/assets/ethereum/mainnet/common/Base58.sol/Base58.dbg.json +4 -0
  221. package/src/assets/ethereum/mainnet/common/Base58.sol/Base58.json +164 -0
  222. package/src/assets/ethereum/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.dbg.json +4 -0
  223. package/src/assets/ethereum/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.json +76 -0
  224. package/src/assets/ethereum/mainnet/common/RestrictedCallers.sol/RestrictedCallers.dbg.json +4 -0
  225. package/src/assets/ethereum/mainnet/common/RestrictedCallers.sol/RestrictedCallers.json +10 -0
  226. package/src/assets/ethereum/mainnet/common/iodata.sol/iodata.dbg.json +4 -0
  227. package/src/assets/ethereum/mainnet/common/iodata.sol/iodata.json +618 -0
  228. package/src/assets/ethereum/mainnet/common/iodata_util.sol/iodata_util.dbg.json +4 -0
  229. package/src/assets/ethereum/mainnet/common/iodata_util.sol/iodata_util.json +40 -0
  230. package/src/assets/ethereum/mainnet/common/sysio_data.sol/sysio_data.dbg.json +4 -0
  231. package/src/assets/ethereum/mainnet/common/sysio_data.sol/sysio_data.json +10 -0
  232. package/src/assets/ethereum/mainnet/common/sysio_errors.sol/sysio_errors.dbg.json +4 -0
  233. package/src/assets/ethereum/mainnet/common/sysio_errors.sol/sysio_errors.json +10 -0
  234. package/src/assets/ethereum/mainnet/common/sysio_merkle.sol/sysio_merkle.dbg.json +4 -0
  235. package/src/assets/ethereum/mainnet/common/sysio_merkle.sol/sysio_merkle.json +233 -0
  236. package/src/assets/ethereum/mainnet/common/sysio_name.sol/sysio_name.dbg.json +4 -0
  237. package/src/assets/ethereum/mainnet/common/sysio_name.sol/sysio_name.json +49 -0
  238. package/src/assets/ethereum/mainnet/common/sysio_pubkey.sol/sysio_pubkey.dbg.json +4 -0
  239. package/src/assets/ethereum/mainnet/common/sysio_pubkey.sol/sysio_pubkey.json +64 -0
  240. package/src/assets/ethereum/mainnet/common/sysio_read.sol/sysio_read.dbg.json +4 -0
  241. package/src/assets/ethereum/mainnet/common/sysio_read.sol/sysio_read.json +1458 -0
  242. package/src/assets/ethereum/mainnet/common/sysio_tester.sol/SysioTester.dbg.json +4 -0
  243. package/src/assets/ethereum/mainnet/common/sysio_tester.sol/SysioTester.json +1532 -0
  244. package/src/assets/ethereum/mainnet/common/sysio_verify.sol/sysio_verify.dbg.json +4 -0
  245. package/src/assets/ethereum/mainnet/common/sysio_verify.sol/sysio_verify.json +1525 -0
  246. package/src/assets/ethereum/mainnet/common/sysio_write.sol/sysio_write.dbg.json +4 -0
  247. package/src/assets/ethereum/mainnet/common/sysio_write.sol/sysio_write.json +1076 -0
  248. package/src/assets/ethereum/mainnet/liqEth/BeaconState.sol/BeaconState.dbg.json +4 -0
  249. package/src/assets/ethereum/mainnet/liqEth/BeaconState.sol/BeaconState.json +807 -0
  250. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/DepositManagerV2.dbg.json +4 -0
  251. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/DepositManagerV2.json +1004 -0
  252. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.dbg.json +4 -0
  253. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.json +29 -0
  254. package/src/assets/ethereum/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.dbg.json +4 -0
  255. package/src/assets/ethereum/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.json +897 -0
  256. package/src/assets/ethereum/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +4 -0
  257. package/src/assets/ethereum/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +1289 -0
  258. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  259. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.json +39 -0
  260. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  261. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.json +64 -0
  262. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.dbg.json +4 -0
  263. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.json +189 -0
  264. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  265. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  266. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  267. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.json +319 -0
  268. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  269. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +333 -0
  270. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  271. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.json +279 -0
  272. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  273. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  274. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  275. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  276. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  277. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  278. package/src/assets/ethereum/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +4 -0
  279. package/src/assets/ethereum/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +236 -0
  280. package/src/assets/ethereum/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +4 -0
  281. package/src/assets/ethereum/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.json +229 -0
  282. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +4 -0
  283. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +957 -0
  284. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +4 -0
  285. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +1020 -0
  286. package/src/assets/ethereum/mainnet/liqEth/StakingLib.sol/StakingLib.dbg.json +4 -0
  287. package/src/assets/ethereum/mainnet/liqEth/StakingLib.sol/StakingLib.json +89 -0
  288. package/src/assets/ethereum/mainnet/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
  289. package/src/assets/ethereum/mainnet/liqEth/Yield.sol/YieldOracle.json +1376 -0
  290. package/src/assets/ethereum/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +4 -0
  291. package/src/assets/ethereum/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.json +1323 -0
  292. package/src/assets/ethereum/mainnet/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +4 -0
  293. package/src/assets/ethereum/mainnet/liqEth/stakingModule.sol/StakingModuleV2.json +1896 -0
  294. package/src/assets/ethereum/mainnet/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +4 -0
  295. package/src/assets/ethereum/mainnet/liqEth/v1/DepositManager.sol/DepositManager.json +978 -0
  296. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  297. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.json +176 -0
  298. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  299. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +39 -0
  300. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  301. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +64 -0
  302. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  303. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  304. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  305. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.json +249 -0
  306. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  307. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.json +263 -0
  308. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  309. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +344 -0
  310. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  311. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  312. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  313. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  314. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  315. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  316. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +4 -0
  317. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.json +874 -0
  318. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +4 -0
  319. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +937 -0
  320. package/src/assets/ethereum/mainnet/liqEth/v1/accounting.sol/Accounting.dbg.json +4 -0
  321. package/src/assets/ethereum/mainnet/liqEth/v1/accounting.sol/Accounting.json +542 -0
  322. package/src/assets/ethereum/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +4 -0
  323. package/src/assets/ethereum/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.json +1233 -0
  324. package/src/assets/ethereum/mainnet/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +4 -0
  325. package/src/assets/ethereum/mainnet/liqEth/v1/stakingModule.sol/StakingModule.json +1772 -0
  326. package/src/assets/ethereum/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
  327. package/src/assets/ethereum/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +973 -0
  328. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
  329. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/Uint64BE.json +10 -0
  330. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
  331. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.json +441 -0
  332. package/src/assets/ethereum/mainnet/outpost/BAR.sol/BARV2.dbg.json +4 -0
  333. package/src/assets/ethereum/mainnet/outpost/BAR.sol/BARV2.json +1915 -0
  334. package/src/assets/ethereum/mainnet/outpost/Depositor.sol/DepositorV2.dbg.json +4 -0
  335. package/src/assets/ethereum/mainnet/outpost/Depositor.sol/DepositorV2.json +1845 -0
  336. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +4 -0
  337. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +122 -0
  338. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +4 -0
  339. package/src/assets/ethereum/{ABI → mainnet}/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +31 -29
  340. package/src/assets/ethereum/mainnet/outpost/OPP.sol/OPP.dbg.json +4 -0
  341. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPP.dbg.json +4 -0
  342. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +4 -0
  343. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.json +29 -0
  344. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPInbound.dbg.json +4 -0
  345. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +4 -0
  346. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPSender.dbg.json +4 -0
  347. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/OPPCommon.dbg.json +4 -0
  348. package/src/assets/ethereum/mainnet/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +4 -0
  349. package/src/assets/ethereum/mainnet/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +4 -0
  350. package/src/assets/ethereum/mainnet/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +4 -0
  351. package/src/assets/ethereum/mainnet/outpost/OPPErrors.sol/OPPErrors.dbg.json +4 -0
  352. package/src/assets/ethereum/mainnet/outpost/OPPInbound.sol/OPPInbound.dbg.json +4 -0
  353. package/src/assets/ethereum/mainnet/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +4 -0
  354. package/src/assets/ethereum/mainnet/outpost/OPPSender.sol/OPPSender.dbg.json +4 -0
  355. package/src/assets/ethereum/mainnet/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +4 -0
  356. package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostErrors.sol/OutpostErrors.json +33 -18
  357. package/src/assets/ethereum/mainnet/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +4 -0
  358. package/src/assets/ethereum/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.dbg.json +4 -0
  359. package/src/assets/ethereum/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.json +737 -0
  360. package/src/assets/ethereum/mainnet/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +4 -0
  361. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +4 -0
  362. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +4 -0
  363. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +29 -0
  364. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +4 -0
  365. package/src/assets/ethereum/mainnet/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +4 -0
  366. package/src/assets/ethereum/mainnet/outpost/Pool.sol/PoolV2.dbg.json +4 -0
  367. package/src/assets/ethereum/mainnet/outpost/Pool.sol/PoolV2.json +943 -0
  368. package/src/assets/ethereum/mainnet/outpost/Pretoken.sol/PretokenV2.dbg.json +4 -0
  369. package/src/assets/ethereum/mainnet/outpost/Pretoken.sol/PretokenV2.json +1703 -0
  370. package/src/assets/ethereum/mainnet/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +4 -0
  371. package/src/assets/ethereum/{ABI → mainnet}/outpost/ReceiptNFT.sol/ReceiptNFT.json +33 -18
  372. package/src/assets/ethereum/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +4 -0
  373. package/src/assets/ethereum/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.json +29 -0
  374. package/src/assets/ethereum/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +4 -0
  375. package/src/assets/ethereum/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.json +29 -0
  376. package/src/assets/ethereum/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +4 -0
  377. package/src/assets/ethereum/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +858 -0
  378. package/src/assets/ethereum/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +4 -0
  379. package/src/assets/ethereum/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +30 -0
  380. package/src/assets/ethereum/mainnet/outpost/v1/BAR.sol/BAR.dbg.json +4 -0
  381. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/BAR.sol/BAR.json +34 -19
  382. package/src/assets/ethereum/mainnet/outpost/v1/Depositor.sol/Depositor.dbg.json +4 -0
  383. package/src/assets/ethereum/mainnet/outpost/v1/Depositor.sol/Depositor.json +1653 -0
  384. package/src/assets/ethereum/mainnet/outpost/v1/OutpostManager.sol/OutpostManager.dbg.json +4 -0
  385. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/OutpostManager.sol/OutpostManager.json +3 -3
  386. package/src/assets/ethereum/mainnet/outpost/v1/Pool.sol/Pool.dbg.json +4 -0
  387. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/Pool.sol/Pool.json +34 -19
  388. package/src/assets/ethereum/mainnet/outpost/v1/Pretoken.sol/Pretoken.dbg.json +4 -0
  389. package/src/assets/ethereum/mainnet/outpost/v1/Pretoken.sol/Pretoken.json +1665 -0
  390. package/src/assets/ethereum/mainnet/token/ERC1155Token.sol/ERC1155Token.dbg.json +4 -0
  391. package/src/assets/ethereum/mainnet/token/ERC1155Token.sol/ERC1155Token.json +472 -0
  392. package/src/assets/ethereum/mainnet/token/ERC20Token.sol/ERC20Token.dbg.json +4 -0
  393. package/src/assets/ethereum/mainnet/token/ERC20Token.sol/ERC20Token.json +330 -0
  394. package/src/assets/ethereum/mainnet/token/ERC721Token.sol/ERC721Token.dbg.json +4 -0
  395. package/src/assets/ethereum/mainnet/token/ERC721Token.sol/ERC721Token.json +449 -0
  396. package/src/assets/solana/devnet/idl/liqsol_core.json +8566 -0
  397. package/src/assets/solana/{idl → devnet/idl}/liqsol_token.json +35 -1
  398. package/src/assets/solana/devnet/idl/transfer_hook.json +490 -0
  399. package/src/assets/solana/devnet/idl/validator_leaderboard.json +735 -0
  400. package/src/assets/solana/devnet/types/liqsol_core.ts +8572 -0
  401. package/src/assets/solana/{types → devnet/types}/liqsol_token.ts +35 -1
  402. package/src/assets/solana/devnet/types/transfer_hook.ts +496 -0
  403. package/src/assets/solana/devnet/types/validator_leaderboard.ts +741 -0
  404. package/src/assets/solana/{idl → mainnet/idl}/liqsol_core.json +3816 -1567
  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/{idl → mainnet/idl}/validator_leaderboard.json +4 -4
  408. package/src/assets/solana/{types → mainnet/types}/liqsol_core.ts +3816 -1567
  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/{types → mainnet/types}/validator_leaderboard.ts +4 -4
  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/{deposit.client.ts → convert.client.ts} +66 -5
  422. package/src/networks/ethereum/clients/opp.client.ts +389 -0
  423. package/src/networks/ethereum/clients/pretoken.client.ts +87 -49
  424. package/src/networks/ethereum/clients/receipt.client.ts +199 -0
  425. package/src/networks/ethereum/clients/stake.client.ts +86 -161
  426. package/src/networks/ethereum/clients/validator.client.ts +61 -0
  427. package/src/networks/ethereum/contract.ts +424 -151
  428. package/src/networks/ethereum/ethereum.ts +454 -244
  429. package/src/networks/ethereum/types.ts +65 -27
  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 +269 -263
  433. package/src/networks/solana/clients/leaderboard.client.ts +68 -26
  434. package/src/networks/solana/clients/outpost.client.ts +224 -357
  435. package/src/networks/solana/clients/token.client.ts +96 -106
  436. package/src/networks/solana/constants.ts +88 -216
  437. package/src/networks/solana/program.ts +432 -28
  438. package/src/networks/solana/solana.ts +1066 -293
  439. package/src/networks/solana/types.ts +687 -78
  440. package/src/networks/solana/utils.ts +159 -356
  441. package/src/staker.ts +25 -4
  442. package/src/types.ts +267 -31
  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/networks/ethereum/clients/liq.client.ts +0 -47
  524. package/src/networks/solana/clients/deposit.client.ts +0 -127
  525. package/src/staker/types.ts +0 -62
  526. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/BeaconState.sol/BeaconState.json +0 -0
  527. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +0 -0
  528. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IDepositContract.json +0 -0
  529. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IDepositManager.json +0 -0
  530. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +0 -0
  531. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +0 -0
  532. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IWithdrawalRecord.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/IPretoken.sol/IPretoken.json +0 -0
  537. /package/src/assets/ethereum/{ABI → hoodi}/outpost/interfaces/IWarrant.sol/IWarrant.json +0 -0
  538. /package/src/assets/ethereum/{ABI → hoodi}/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +0 -0
  539. /package/src/assets/ethereum/{ABI → hoodi}/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +0 -0
  540. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPP.sol/OPP.json +0 -0
  541. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPP.json +0 -0
  542. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPInbound.json +0 -0
  543. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPReceiver.json +0 -0
  544. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPSender.json +0 -0
  545. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/OPPCommon.json +0 -0
  546. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpoint.sol/OPPEndpoint.json +0 -0
  547. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +0 -0
  548. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +0 -0
  549. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPErrors.sol/OPPErrors.json +0 -0
  550. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPInbound.sol/OPPInbound.json +0 -0
  551. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPReceiver.sol/OPPReceiver.json +0 -0
  552. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPSender.sol/OPPSender.json +0 -0
  553. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManaged.sol/OutpostManaged.json +0 -0
  554. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +0 -0
  555. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/IOutpostManager.json +0 -0
  556. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +0 -0
  557. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostOwnable.sol/OutpostOwnable.json +0 -0
@@ -1,56 +1,71 @@
1
1
  import { BigNumber, ethers } from 'ethers';
2
- import { IStakingClient, Portfolio, StakerConfig, TrancheSnapshot } from '../../types';
3
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 } 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';
8
15
  import { PretokenClient } from './clients/pretoken.client';
9
- import { buildEthereumTrancheSnapshot } from './utils';
10
- import { LiqClient } from './clients/liq.client';
11
-
12
-
16
+ import { OPPClient } from './clients/opp.client';
17
+ import { ReceiptClient } from './clients/receipt.client';
18
+ import { ValidatorClient } from './clients/validator.client';
13
19
 
20
+ export const INITIAL_TRANCHE_SUPPLY = 35000;
14
21
 
15
22
  export class EthereumStakingClient implements IStakingClient {
23
+ private readonly provider: ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider;
16
24
  public readonly pubKey?: WirePubKey;
17
- private readonly provider: ethers.providers.Web3Provider;
18
- private readonly signer: ethers.Signer;
25
+ private readonly signer?: ethers.Signer;
19
26
  private readonly contractService: EthereumContractService;
20
27
 
21
- private depositClient: DepositClient;
22
- private liqClient: LiqClient;
28
+ private convertClient: ConvertClient;
23
29
  private pretokenClient: PretokenClient;
24
30
  private stakeClient: StakeClient;
25
-
31
+ private oppClient: OPPClient;
32
+ private receiptClient: ReceiptClient;
33
+ private validatorClient: ValidatorClient;
26
34
 
27
35
  get contract() { return this.contractService.contract; }
28
36
  get network() { return this.config.network; }
37
+ get address() { return this.signer?.getAddress(); }
29
38
 
30
39
  constructor(private config: StakerConfig) {
31
40
  try {
32
- this.provider = config.provider as ethers.providers.Web3Provider;
33
- this.signer = this.provider.getSigner();
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
+ }
34
48
  this.pubKey = config.pubKey;
35
-
49
+
36
50
  this.contractService = new EthereumContractService({
37
51
  provider: this.provider,
38
52
  signer: this.signer,
53
+ chainId: config.network.chainId as EvmChainID,
39
54
  });
40
-
41
- this.depositClient = new DepositClient(this.contractService);
42
- this.liqClient = new LiqClient(this.contractService);
55
+
56
+ this.convertClient = new ConvertClient(this.contractService);
43
57
  this.pretokenClient = new PretokenClient(this.contractService);
44
58
  this.stakeClient = new StakeClient(this.contractService);
45
- }
59
+ this.oppClient = new OPPClient(this.contractService);
60
+ this.receiptClient = new ReceiptClient(this.contractService);
61
+ this.validatorClient = new ValidatorClient(this.contractService)
62
+ }
46
63
  catch (error) {
47
64
  // console.error('Error initializing EthereumStakingClient:', error);
48
65
  throw error;
49
- }
66
+ }
50
67
  }
51
68
 
52
-
53
-
54
69
  // ---------------------------------------------------------------------
55
70
  // Public IStakingClient Interface Methods
56
71
  // ---------------------------------------------------------------------
@@ -62,40 +77,66 @@ export class EthereumStakingClient implements IStakingClient {
62
77
  * @returns transaction hash
63
78
  */
64
79
  async deposit(amount: number | string | bigint | BigNumber): Promise<string> {
80
+ this.ensureUser();
81
+
65
82
  const amountWei = BigNumber.isBigNumber(amount)
66
83
  ? amount
67
84
  : BigNumber.from(amount);
68
85
 
69
- const result = await this.depositClient.performDeposit(amountWei);
86
+ const result = await this.convertClient.performDeposit(amountWei);
70
87
  return result.txHash;
71
88
  }
72
89
 
73
-
74
-
75
90
  /**
76
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.
77
92
  * @param amount Amount in wei (or something convertible to BigNumber).
78
93
  * @returns transaction hash
79
94
  */
80
95
  async withdraw(amount: bigint): Promise<string> {
81
- const address = await this.signer.getAddress();
96
+ this.ensureUser();
97
+
98
+ const address = await this.address!;
82
99
  const amountWei = BigNumber.from(amount);
83
- // const chainId = this.network?.chainId ?? (await this.provider.getNetwork()).chainId;
84
- // const result = await this.depositClient.requestWithdraw(amountWei, this.signer, chainId);
85
100
 
86
- const result = await this.liqClient.safeBurn(address, amountWei)
101
+ const result = await this.convertClient.performWithdraw(address, amountWei)
102
+ return result.txHash;
103
+ }
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)
87
127
  return result.txHash;
88
128
  }
89
129
 
90
130
 
91
131
  /**
92
132
  * Stake liqETH via DepositManager.
93
- * @param amount Amount in wei
94
- * Keep this as a bigint / string in the caller; avoid JS floats.
133
+ * @param amount Amount in wei - Keep this as a bigint / string in the caller; avoid JS floats.
95
134
  * @returns transaction hash
96
135
  */
97
136
  async stake(amount: bigint): Promise<string> {
98
- const walletAddress = await this.signer.getAddress();
137
+ this.ensureUser();
138
+
139
+ const walletAddress = await this.address!;
99
140
  const amountWei = BigNumber.from(amount);
100
141
 
101
142
  const result = await this.stakeClient.performStake(amountWei, walletAddress);
@@ -108,6 +149,46 @@ export class EthereumStakingClient implements IStakingClient {
108
149
  throw new Error("Method not yet implemented.");
109
150
  }
110
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
+
111
192
 
112
193
  /**
113
194
  * ETH Prelaunch function to unstake liqEth
@@ -116,86 +197,219 @@ export class EthereumStakingClient implements IStakingClient {
116
197
  * @returns the transaction hash
117
198
  */
118
199
  async unstakePrelaunch(tokenId: bigint, recipient: string): Promise<string> {
200
+ this.ensureUser();
201
+
119
202
  const tokenIdBigNum = BigNumber.from(tokenId)
120
203
  const result = await this.stakeClient.performWithdrawStake(tokenIdBigNum, recipient);
121
204
  return result.txHash;
122
205
  }
123
206
 
124
207
 
125
-
126
208
  async buy(amount: bigint): Promise<string> {
127
- const buyer = await this.signer.getAddress();
128
- const amountBigNum = BigNumber.from(amount)
209
+ this.ensureUser();
210
+
211
+ const buyer = await this.address!;
129
212
 
130
213
  // ! Hoodi only - check if the mock aggregator price is stale, and if so, update it before submitting the buy request
131
- await this.updateMockAggregatorPrice();
132
-
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();
133
218
 
134
- const bal = await this.contract.LiqEth.balanceOf(buyer);
135
- const paused = await this.contract.Depositor.paused();
136
- if(paused) {
137
- throw new Error("Error - Depositor is in a paused state");
138
- }
219
+ let result = await this.pretokenClient.purchasePretokensWithLiqETH(amount, buyer);
220
+ return result && result.txHash ? result.txHash : "Error - no resulting txHash";
221
+ }
139
222
 
140
- // if current liq balance is less than the requested buy amount, throw an error
141
- if (bal.lt(amount)) {
142
- throw new Error(`Balance insufficient for pre-token purchase`);
143
- }
144
223
 
145
- //check that the contract has allowance for the token
146
- const depositorAddr = this.contract.Depositor.address;
147
- const allowance = await this.contract.LiqEth.allowance(buyer, depositorAddr);
224
+ /**
225
+ * Validator functions
226
+ */
227
+ async validatorDeposit(): Promise<string> {
228
+ this.ensureUser();
148
229
 
149
- // if allowance is less than the requested stake amount, request permission to spend LiqEth
150
- if (allowance.lt(amount)) {
151
- const liqWrite = this.contractService.getWrite('LiqEth');
230
+ let result = await this.validatorClient.validatorDepositAndLockBond();
231
+ return result && result.txHash ? result.txHash : "Error - no resulting txHash";
232
+ }
233
+
152
234
 
153
- // currently requested unlimited amount - potentially change to only request up to the current amount?
154
- const approveAmount = ethers.constants.MaxUint256;
155
235
 
156
- console.warn(`allowance insufficient (${allowance.toString()} < ${amount.toString()}); sending approve(${depositorAddr}, ${approveAmount.toString()})`);
157
236
 
158
- const approveTx = await liqWrite.approve(depositorAddr, approveAmount);
159
- await approveTx.wait(1);
160
237
 
161
- // re-read allowance to ensure approval succeeded
162
- const newAllowance = await this.contract.LiqEth.allowance(buyer, depositorAddr);
163
- if (newAllowance.lt(amount)) {
164
- throw new Error('Approval failed or allowance still insufficient after approve');
165
- }
166
- }
167
238
 
239
+ /**
240
+ * Resolve the user's ETH + liqETH balances.
241
+ *
242
+ * native = ETH in wallet
243
+ * actual = liqETH token balance (ERC-20)
244
+ * tracked = liqETH tracked balance (protocol/accounting view)
245
+ */
246
+ async getPortfolio(address?: string): Promise<Portfolio | null> {
168
247
 
169
- let result = await this.pretokenClient.purchasePretokensWithLiqETH(amountBigNum, buyer);
248
+ try {
249
+ if (!this.signer) return Promise.resolve(null);
170
250
 
171
- return result && result.txHash ? result.txHash : "Error - no resulting txHash";
172
- }
251
+ const walletAddress = address ?? await this.address!;
173
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';
174
257
 
175
-
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');
176
261
 
177
- async getOPPStatus(): Promise<any> {
178
- return await this.stakeClient.getOppStatus();
179
- }
262
+ // 3) staked liqEth ERC-20 balance (calculate from receipts)
263
+ let stakeReceipts = await this.receiptClient.stakeReceipts(walletAddress);
180
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;
346
+ }
347
+ }
181
348
 
182
-
183
349
  /**
184
- * ETH Prelaunch function to list the ReceiptNFTs owned by a specific user
350
+ * ETH Prelaunch function to list the Stake ReceiptNFTs owned by a specific user
185
351
  * @param address address to query the receipts for
186
352
  * @returns array of receipts
187
353
  */
188
354
  async fetchPrelaunchReceipts(address?: string): Promise<preLaunchReceipt[]> {
189
- if(address === undefined) address = await this.signer.getAddress();
190
-
191
- let receipts = await this.stakeClient.fetchPreLaunchReceipts(address);
192
- return receipts
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);
361
+ }
362
+
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
+
383
+ // ---------------------------------------------------------------------
384
+ // READ-ONLY Public Methods
385
+ // ---------------------------------------------------------------------
386
+
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();
193
409
  }
194
410
 
195
-
196
-
197
411
  async getEthStats(): Promise<any> {
198
- let withdrawDelay = await this.contract.DepositManager.withdrawDelay();
412
+ let withdrawDelay = await this.contract.WithdrawalQueue.withdrawDelay();
199
413
  let minDeposit = await this.contract.DepositManager.minDeposit();
200
414
  let rewardCooldown = await this.contract.DepositManager.rewardCooldown();
201
415
 
@@ -207,188 +421,184 @@ export class EthereumStakingClient implements IStakingClient {
207
421
  }
208
422
 
209
423
  /**
210
- * Resolve the user's ETH + liqETH balances.
211
- *
212
- * native = ETH in wallet
213
- * actual = liqETH token balance (ERC-20)
214
- * tracked = liqETH tracked balance (protocol/accounting view)
424
+ * Program-level prelaunch WIRE / tranche snapshot for Ethereum
425
+ *
426
+ * SUPPORTS READ-ONLY ACcESS
215
427
  */
216
- async getPortfolio(): Promise<Portfolio> {
217
- const walletAddress = await this.signer.getAddress();
218
- // console.log('getPortfolio() wallet address', walletAddress)
219
-
220
-
221
- // 1) Native ETH balance
222
- const nativeBalance = await this.provider.getBalance(walletAddress);
223
- const nativeDecimals = this.network?.nativeCurrency?.decimals ?? 18;
224
- const nativeSymbol = this.network?.nativeCurrency?.symbol ?? 'ETH';
225
-
226
- // 2) liqETH ERC-20 balance (actual)
227
- const liqBalance: ethers.BigNumber = await this.contract.LiqEth.balanceOf(walletAddress);
228
- const liqSymbol = 'Liq' + (this.network?.nativeCurrency?.symbol ?? 'ETH');
229
-
230
- // 3) staked liqEth ERC-20 balance (actual)
231
- const stakedLiqBalance = await this.contract.Depositor.sharesOf(walletAddress);
232
-
233
-
234
- const portfolio: Portfolio = {
235
- native: {
236
- amount: nativeBalance.toBigInt(),
237
- decimals: nativeDecimals,
238
- symbol: nativeSymbol,
239
- },
240
- liq: {
241
- amount: liqBalance.toBigInt(),
242
- decimals: nativeDecimals,
243
- symbol: liqSymbol,
244
- },
245
- tracked: {
246
- amount: liqBalance.toBigInt(),
247
- decimals: nativeDecimals,
248
- symbol: liqSymbol,
249
- },
250
- staked: {
251
- amount: stakedLiqBalance.toBigInt(),
252
- decimals: nativeDecimals,
253
- symbol: liqSymbol,
254
- },
255
- wire: {
256
- amount: BigInt(0), // TODO
257
- decimals: 0,
258
- symbol: '$WIRE',
259
- },
260
- chainID: this.network.chainId
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}`);
261
480
  }
262
- return portfolio;
263
481
  }
264
482
 
265
-
266
483
  /**
267
- * Program-level prelaunch WIRE / tranche snapshot for Ethereum
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)
268
494
  */
269
- async getTrancheSnapshot(options?: {
270
- chainID?: ChainID;
271
- windowBefore?: number;
272
- windowAfter?: number;
273
- }): Promise<TrancheSnapshot> {
274
- const {
275
- chainID = EvmChainID.Hoodi,
276
- windowBefore,
277
- windowAfter,
278
- } = options ?? {};
279
-
280
-
281
- const blockNumber = await this.provider.getBlockNumber();
282
- const blockTag = { blockTag: blockNumber };
283
-
284
- // Fetch all required contract data
285
- const [totalSharesBn, indexBn, trancheNumberBn, trancheSupplyBn, tranchePriceWadBn, totalSupplyBn, supplyGrowthBps, priceGrowthBps, minPriceUsd, maxPriceUsd] = await Promise.all([
286
- this.contract.Depositor.totalShares(blockTag),
287
- this.contract.Depositor.index(blockTag),
288
- this.contract.Pretoken.trancheNumber(blockTag),
289
- this.contract.Pretoken.trancheSupply(blockTag),
290
- this.contract.Pretoken.tranchePriceUsd(blockTag),
291
- this.contract.Pretoken.totalSupply(blockTag),
292
- this.contract.Pretoken.supplyGrowthBps(blockTag),
293
- this.contract.Pretoken.priceGrowthBps(blockTag),
294
- this.contract.EthUsdPriceConsumer.MIN_PRICE(),
295
- this.contract.EthUsdPriceConsumer.MAX_PRICE(),
296
- ]);
297
-
298
-
299
- const totalTrancheSupply = BigInt(totalSupplyBn.toString()) / BigInt(1e10);
300
- const currentTrancheSupply = BigInt(trancheSupplyBn.toString()) / BigInt(1e10);
301
-
302
-
303
- // fetch price and timestamp from aggregator
304
- const [ roundId, answer, startedAt, updatedAt, answeredInRound ] = await this.contract.Aggregator.latestRoundData();
305
- let ethPriceUsd: bigint = BigInt(answer.toString());
306
- let nativePriceTimestamp: number = Number(updatedAt);
307
-
308
- // ! Placeholder from hoodi deployment - don't think this can be fetched dynamically
309
- const initialTrancheSupply = BigInt(60000) * BigInt(1e8);
310
-
311
- return buildEthereumTrancheSnapshot({
312
- chainID,
313
- totalSharesBn,
314
- indexBn,
315
- trancheNumberBn,
316
- currentTrancheSupply,
317
- tranchePriceWadBn,
318
- totalTrancheSupply,
319
- initialTrancheSupply,
320
- supplyGrowthBps,
321
- priceGrowthBps,
322
- minPriceUsd,
323
- maxPriceUsd,
324
-
325
- ethPriceUsd,
326
- nativePriceTimestamp,
327
- ladderWindowBefore: windowBefore,
328
- ladderWindowAfter: windowAfter,
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,
329
511
  });
330
- }
331
-
332
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
333
519
 
334
-
335
- // ---------------------------------------------------------------------
336
- // Internal ETH Staking client helper functions
337
- // ---------------------------------------------------------------------
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;
338
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);
339
530
 
340
-
531
+ const baseCost = totalGasUnits.mul(gasPrice);
341
532
 
342
- // ! This is a temporary measure for Hoodi testnet because there is no aggregator deployed
343
- private async updateMockAggregatorPrice() {
344
- const aggregator = this.contract.Aggregator;
345
-
346
- // read latest round & compute age
347
- const [roundId, answer, startedAt, updatedAt, answeredInRound] = await aggregator.latestRoundData();
348
- const now = (await this.provider.getBlock("latest")).timestamp;
349
- const ageSec = Number(now) - Number(updatedAt);
350
-
351
- const ONE_HOUR = 1 * 3600;
352
- // const ONE_HOUR = 10;
353
- if (ageSec > ONE_HOUR) {
354
- // safety check - only run in non-production contexts
355
- const network = await this.provider.getNetwork();
356
- const chainId = network.chainId;
357
- const allowedTestChains = new Set([560048]);
358
- if (!allowedTestChains.has(chainId)) {
359
- console.warn(`MockAggregator is stale (${ageSec}s) but chainId ${chainId} is not a test/local network — skipping update.`);
360
- return;
361
- }
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
362
536
 
537
+ const bufferedCost = baseCost
538
+ .mul(safetyScaled)
539
+ .div(100); // apply safety factor
363
540
 
364
- //fetch the current ETH / USD price
365
- const res = await fetch('https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd');
366
- const data = await res.json();
367
- const ethUsd = data.ethereum.usd;
541
+ let bufferWei = bufferedCost.toBigInt();
368
542
 
369
- const currentEthPrice = ethers.utils.parseUnits(ethUsd.toString(), 8);
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;
370
546
 
371
- try {
372
- //update to be intentionally stale
373
- // const alttx = await aggregator.updateStale(currentEthPrice, now - 7200);
374
- // const altreceipt = await alttx.wait(1);
375
- // console.log('stale update receipt', altreceipt)
376
-
377
- //update answer with current timestamp
378
- const tx = await aggregator.updateAnswer(currentEthPrice);
379
- const txreceipt = await tx.wait(1);
380
- // console.log('MockAggregator answer updated - receipt:', txreceipt)
381
- } catch (err: any) {
382
- console.error('MockAggregator updateAnswer failed', err?.message || err);
383
- }
384
- } else {
385
- console.log(`MockAggregator updated ${ageSec}s ago — no update needed`);
547
+ if (bufferWei < minBufferWei) {
548
+ bufferWei = minBufferWei;
386
549
  }
387
- }
388
-
389
-
390
550
 
551
+ return bufferWei;
552
+ }
391
553
 
554
+ // ---------------------------------------------------------------------
555
+ // Internal ETH Staking client helper functions
556
+ // ---------------------------------------------------------------------
392
557
 
393
- // TODO: implement claimRewards, etc.
394
- }
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
+ }