default
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:222
SSV Network token staking for EVM wallet accounts.
SSV Network is the distributed validator (DVT) infrastructure a large share
of Ethereum staking runs on; SSV is its ERC-20 token, and cluster operators
pay the network’s fees in ETH. Staking SSV mints cSSV 1:1 — a transferable,
non-rebasing receipt token — and entitles the holder to a pro-rata share of
those ETH fees, tracked through an ETH-per-share index and claimable at any
time without unstaking. Getting the SSV back is a two-phase exit: a
requestUnstake burns the cSSV into a cooldown entry (7 days at launch,
DAO-tunable, not cancellable) and withdrawUnlocked pays out every entry
whose cooldown has ended.
That two-phase shape is exactly the proposed StakingProtocol interface:
stake → requestWithdrawal → getWithdrawalRequests → claimWithdrawals.
Two honest differences from the Lido implementation are documented on the
methods: the withdrawal pays SSV (the staked token, not the chain’s native
token), and the claim call is all-or-nothing (ids are informational).
Neither SSV nor cSSV supports EIP-2612 permit, so the first stake is two
transactions: approve (awaited to a mined receipt — stake’s gas estimate
reverts against an unmined allowance) and then stake. Every write is
proven with an eth_call before broadcasting, so a revert surfaces as the
named custom error instead of burned gas.
Extends
Section titled “Extends”Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new default(
account,config?):SsvProtocolEvm
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:234
Creates a new interface to the SSV Network staking protocol for evm blockchains.
Parameters
Section titled “Parameters”account
Section titled “account”The wallet account to use to interact with the protocol (a @anywalletkit/wallet-evm account, or a read-only / minimal { getAddress } account for views).
config?
Section titled “config?”SsvProtocolConfig = {}
The protocol’s configuration.
Returns
Section titled “Returns”SsvProtocolEvm
Overrides
Section titled “Overrides”Properties
Section titled “Properties”_account
Section titled “_account”
protectedreadonly_account:IWalletAccountReadOnly|IWalletAccount
Defined in: core/dist/index-QWdcwE6y.d.ts:309
Inherited from
Section titled “Inherited from”_config
Section titled “_config”
protectedreadonly_config:SsvProtocolConfig
Defined in: core/dist/index-QWdcwE6y.d.ts:310
Inherited from
Section titled “Inherited from”Methods
Section titled “Methods”claimRewards()
Section titled “claimRewards()”claimRewards():
Promise<ClaimWithdrawalsResult>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:567
Claims the accrued ETH rewards — ETH lands on the account, the staked position is untouched.
Returns
Section titled “Returns”Promise<ClaimWithdrawalsResult>
The claim’s result.
claimWithdrawals()
Section titled “claimWithdrawals()”claimWithdrawals(
_options?):Promise<ClaimWithdrawalsResult>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:461
Pays out every cooldown entry that has unlocked — SSV lands on the
account. withdrawUnlocked is all-or-nothing on the network side, so
options.ids cannot narrow the claim; they are accepted for interface
parity and the call refuses only when nothing at all is unlocked.
Parameters
Section titled “Parameters”_options?
Section titled “_options?”The claim’s options.
Returns
Section titled “Returns”Promise<ClaimWithdrawalsResult>
The claim’s result.
Overrides
Section titled “Overrides”StakingProtocol.claimWithdrawals
describeActivity()
Section titled “describeActivity()”describeActivity(
tx,ctx):ActivityItem|null
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:650
Recognize this deployment’s SSV staking transactions offline (stake,
requestUnstake, withdrawUnlocked, claimEthRewards on SSVNetwork).
See ssv-activity.ts for the rule.
Parameters
Section titled “Parameters”ChainTx
DescribeActivityContext
Returns
Section titled “Returns”ActivityItem | null
Overrides
Section titled “Overrides”StakingProtocol.describeActivity
getApr()
Section titled “getApr()”getApr():
Promise<number>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:502
The current APR in percent, from SSV Network’s API — the same number stake.ssv.network shows. It is ETH-denominated on an SSV-denominated stake, so it moves with SSV’s price.
Returns
Section titled “Returns”Promise<number>
The APR.
Overrides
Section titled “Overrides”getAprHistory()
Section titled “getAprHistory()”getAprHistory(
options?):Promise<AprSample[]>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:620
Daily APR samples from SSV Network’s API, oldest first, with the SSV and ETH prices the API priced them at. Decoration: failures return an empty array, never throw.
Parameters
Section titled “Parameters”options?
Section titled “options?”The history’s options.
limit?
Section titled “limit?”number = 7
Returns
Section titled “Returns”Promise<AprSample[]>
Samples (timestamp unix seconds, apr percent).
getClaimableRewards()
Section titled “getClaimableRewards()”getClaimableRewards():
Promise<bigint>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:546
ETH rewards accrued to the account and not yet claimed. Claims round
down to ETH_CLAIM_UNIT; below it the network refuses the claim.
Returns
Section titled “Returns”Promise<bigint>
ETH in wei.
getCooldown()
Section titled “getCooldown()”getCooldown():
Promise<number>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:592
The network’s current unstake cooldown, in seconds (DAO-tunable — read it, never hardcode 7 days).
Returns
Section titled “Returns”Promise<number>
Cooldown seconds.
getNetworkStats()
Section titled “getNetworkStats()”getNetworkStats():
Promise<NetworkStats>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:601
Network-wide staking figures.
Returns
Section titled “Returns”Promise<NetworkStats>
Total cSSV supply (SSV base unit), the ETH pool backing claims (wei), and the cumulative ETH-per-share index (1e18 precision).
getStakedBalance()
Section titled “getStakedBalance()”getStakedBalance():
Promise<StakedBalance>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:487
The account’s staked position. cSSV is the only staked form and it is
1:1 with SSV, so wrappedBalance is 0 and rate is exactly 1e18.
Returns
Section titled “Returns”Promise<StakedBalance>
The staked balances.
Overrides
Section titled “Overrides”StakingProtocol.getStakedBalance
getTokenBalance()
Section titled “getTokenBalance()”getTokenBalance():
Promise<bigint>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:533
The account’s liquid (unstaked, stakeable) SSV balance.
Returns
Section titled “Returns”Promise<bigint>
SSV in base unit.
getWithdrawalRequests()
Section titled “getWithdrawalRequests()”getWithdrawalRequests():
Promise<WithdrawalRequestsView>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:412
The account’s open cooldown entries. Ids are the entries’ positions in
the network’s per-account list — stable until a withdrawal removes the
unlocked ones, so re-read after every write rather than caching them.
timestamp is derived (unlockTime − current cooldown); unlockTime is
the on-chain value. Amounts are SSV: the exit pays the staked token, not ETH.
Returns
Section titled “Returns”Promise<WithdrawalRequestsView>
The queue view.
Overrides
Section titled “Overrides”StakingProtocol.getWithdrawalRequests
quoteClaimRewards()
Section titled “quoteClaimRewards()”quoteClaimRewards():
Promise<Omit<ClaimWithdrawalsResult,"hash">>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:580
Quotes the costs of a rewards claim.
Returns
Section titled “Returns”Promise<Omit<ClaimWithdrawalsResult, "hash">>
The claim’s costs.
quoteClaimWithdrawals()
Section titled “quoteClaimWithdrawals()”quoteClaimWithdrawals(
_options?):Promise<Omit<ClaimWithdrawalsResult,"hash">>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:475
Quotes the costs of a withdraw operation.
Parameters
Section titled “Parameters”_options?
Section titled “_options?”The claim’s options.
Returns
Section titled “Returns”Promise<Omit<ClaimWithdrawalsResult, "hash">>
The claim’s costs.
Overrides
Section titled “Overrides”StakingProtocol.quoteClaimWithdrawals
quoteRequestWithdrawal()
Section titled “quoteRequestWithdrawal()”quoteRequestWithdrawal(
options):Promise<Omit<WithdrawalRequestResult,"hash"|"approveHash">>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:397
Quotes the costs of an unstake request.
Parameters
Section titled “Parameters”options
Section titled “options”The request’s options.
Returns
Section titled “Returns”Promise<Omit<WithdrawalRequestResult, "hash" | "approveHash">>
The request’s costs.
Overrides
Section titled “Overrides”StakingProtocol.quoteRequestWithdrawal
quoteStake()
Section titled “quoteStake()”quoteStake(
options):Promise<Omit<StakeResult,"hash">>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:366
Quotes the costs of a stake operation, assuming the network already holds an allowance (without one the estimate itself reverts).
Parameters
Section titled “Parameters”options
Section titled “options”The stake’s options.
Returns
Section titled “Returns”Promise<Omit<StakeResult, "hash">>
The stake’s costs.
Overrides
Section titled “Overrides”requestWithdrawal()
Section titled “requestWithdrawal()”requestWithdrawal(
options):Promise<WithdrawalRequestResult>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:382
Burns cSSV into a cooldown entry. Irreversible: the entry cannot be
cancelled and stops earning immediately; the SSV unlocks after the
network’s cooldown (see getCooldown). There is a single staked-token
form, so token is accepted for interface parity and ignored.
Parameters
Section titled “Parameters”options
Section titled “options”The request’s options (amount in cSSV base unit).
Returns
Section titled “Returns”Promise<WithdrawalRequestResult>
The request’s result (approveHash is always null — burning needs no approval).
Overrides
Section titled “Overrides”StakingProtocol.requestWithdrawal
requireSigningAccount()
Section titled “requireSigningAccount()”
protectedrequireSigningAccount(methodName):IWalletAccount
Defined in: core/dist/index-QWdcwE6y.d.ts:322
The account, narrowed to a signing one, or a ReadOnlyAccountError naming the caller.
Parameters
Section titled “Parameters”methodName
Section titled “methodName”string
Returns
Section titled “Returns”IWalletAccount
Inherited from
Section titled “Inherited from”StakingProtocol.requireSigningAccount
stake()
Section titled “stake()”stake(
options):Promise<StakeResult&object>
Defined in: protocol-staking-ssv-evm/src/ssv-protocol-evm.ts:326
Stakes SSV — cSSV lands on the account 1:1 and ETH rewards start accruing
at once. Approves first when the allowance is short (the approval is
awaited to a mined receipt), then proves and sends stake.
Parameters
Section titled “Parameters”options
Section titled “options”The stake’s options (amount in SSV base unit).
Returns
Section titled “Returns”Promise<StakeResult & object>
The stake’s result; fee includes the approval when one ran.