solana_loader_v4_interface/
state.rs1use solana_pubkey::Pubkey;
2
3#[repr(u64)]
4#[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))]
5#[derive(Debug, PartialEq, Eq, Clone, Copy)]
6pub enum LoaderV4Status {
7 Retracted,
9 Deployed,
11 Finalized,
13}
14
15#[repr(C)]
17#[cfg_attr(feature = "frozen-abi", derive(solana_frozen_abi_macro::AbiExample))]
18#[derive(Debug, PartialEq, Eq, Clone, Copy)]
19pub struct LoaderV4State {
20 pub slot: u64,
22 pub authority_address_or_next_version: Pubkey,
25 pub status: LoaderV4Status,
27 }
30
31impl LoaderV4State {
32 pub const fn program_data_offset() -> usize {
34 std::mem::size_of::<Self>()
35 }
36}
37
38#[cfg(test)]
39mod tests {
40 use {super::*, memoffset::offset_of};
41
42 #[test]
43 fn test_layout() {
44 assert_eq!(offset_of!(LoaderV4State, slot), 0x00);
45 assert_eq!(
46 offset_of!(LoaderV4State, authority_address_or_next_version),
47 0x08
48 );
49 assert_eq!(offset_of!(LoaderV4State, status), 0x28);
50 assert_eq!(LoaderV4State::program_data_offset(), 0x30);
51 }
52}