solana_loader_v4_interface/
state.rsuse solana_pubkey::Pubkey;
#[repr(u64)]
#[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum LoaderV4Status {
Retracted,
Deployed,
Finalized,
}
#[repr(C)]
#[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub struct LoaderV4State {
pub slot: u64,
pub authority_address_or_next_version: Pubkey,
pub status: LoaderV4Status,
}
impl LoaderV4State {
pub const fn program_data_offset() -> usize {
std::mem::size_of::<Self>()
}
}
#[cfg(test)]
mod tests {
use {super::*, memoffset::offset_of};
#[test]
fn test_layout() {
assert_eq!(offset_of!(LoaderV4State, slot), 0x00);
assert_eq!(
offset_of!(LoaderV4State, authority_address_or_next_version),
0x08
);
assert_eq!(offset_of!(LoaderV4State, status), 0x28);
assert_eq!(LoaderV4State::program_data_offset(), 0x30);
}
}