use {
crate::consensus::{BlockhashStatus, SwitchForkDecision},
serde::{Deserialize, Serialize},
solana_clock::Slot,
solana_pubkey::Pubkey,
solana_vote::vote_transaction::VoteTransaction,
solana_vote_program::vote_state::{BlockTimestamp, vote_state_1_14_11::VoteState1_14_11},
};
#[cfg_attr(
feature = "frozen-abi",
derive(AbiExample, StableAbi, StableAbiSample),
frozen_abi(
api_digest = "B1L3iQKWwktCs1jEZhvgwn8h4fk6zMVJM2hXbKA1TuZ8",
abi_digest = "DsTqqTxSXRHpGKM12HvSqKaYr18D4WGPGEbYV1cs2W3n"
)
)]
#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)]
pub struct Tower1_14_11 {
pub(crate) node_pubkey: Pubkey,
pub(crate) threshold_depth: usize,
pub(crate) threshold_size: f64,
pub(crate) vote_state: VoteState1_14_11,
pub(crate) last_vote: VoteTransaction,
#[serde(skip)]
pub(crate) last_vote_tx_blockhash: BlockhashStatus,
pub(crate) last_timestamp: BlockTimestamp,
#[serde(skip)]
pub(crate) stray_restored_slot: Option<Slot>,
#[serde(skip)]
pub(crate) last_switch_threshold_check: Option<(Slot, SwitchForkDecision)>,
}