diff --git a/client/src/rpc_client.rs b/client/src/rpc_client.rs index 06d4b6894e..7adce47791 100644 --- a/client/src/rpc_client.rs +++ b/client/src/rpc_client.rs @@ -7,7 +7,7 @@ use crate::{ RpcConfirmedBlockConfig, RpcConfirmedTransactionConfig, RpcGetConfirmedSignaturesForAddress2Config, RpcLargestAccountsConfig, RpcProgramAccountsConfig, RpcSendTransactionConfig, RpcSimulateTransactionConfig, - RpcTokenAccountsFilter, + RpcStakeConfig, RpcTokenAccountsFilter, }, rpc_request::{RpcError, RpcRequest, RpcResponseErrorData, TokenAccountsFilter}, rpc_response::*, @@ -24,7 +24,7 @@ use solana_account_decoder::{ use solana_sdk::{ account::Account, clock::{ - Slot, UnixTimestamp, DEFAULT_TICKS_PER_SECOND, DEFAULT_TICKS_PER_SLOT, + Epoch, Slot, UnixTimestamp, DEFAULT_TICKS_PER_SECOND, DEFAULT_TICKS_PER_SLOT, MAX_HASH_AGE_IN_SECONDS, }, commitment_config::{CommitmentConfig, CommitmentLevel}, @@ -421,6 +421,23 @@ impl RpcClient { }) } + pub fn get_stake_activation( + &self, + stake_account: Pubkey, + epoch: Option, + ) -> ClientResult { + self.send( + RpcRequest::GetStakeActivation, + json!([ + stake_account.to_string(), + RpcStakeConfig { + epoch, + commitment: Some(self.commitment_config), + } + ]), + ) + } + pub fn supply(&self) -> RpcResult { self.supply_with_commitment(self.commitment_config) } diff --git a/client/src/rpc_request.rs b/client/src/rpc_request.rs index 0418ebc8a7..c5b445a090 100644 --- a/client/src/rpc_request.rs +++ b/client/src/rpc_request.rs @@ -44,6 +44,7 @@ pub enum RpcRequest { GetStorageTurn, GetStorageTurnRate, GetSlotsPerSegment, + GetStakeActivation, GetStoragePubkeysForSlot, GetSupply, GetTokenAccountBalance, @@ -100,6 +101,7 @@ impl fmt::Display for RpcRequest { RpcRequest::GetSlot => "getSlot", RpcRequest::GetSlotLeader => "getSlotLeader", RpcRequest::GetSlotLeaders => "getSlotLeaders", + RpcRequest::GetStakeActivation => "getStakeActivation", RpcRequest::GetStorageTurn => "getStorageTurn", RpcRequest::GetStorageTurnRate => "getStorageTurnRate", RpcRequest::GetSlotsPerSegment => "getSlotsPerSegment", diff --git a/client/src/rpc_response.rs b/client/src/rpc_response.rs index a6d14e6b33..940d4fcd1a 100644 --- a/client/src/rpc_response.rs +++ b/client/src/rpc_response.rs @@ -313,7 +313,7 @@ pub struct RpcSupply { pub non_circulating_accounts: Vec, } -#[derive(Serialize, Deserialize, Clone, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] #[serde(rename_all = "camelCase")] pub enum StakeActivationState { Activating,