1pub use solana_address_lookup_table_interface::{
2 error, instruction, program, state::AddressLookupTable,
3};
4use solana_message::AddressLookupTableAccount;
5use solana_pubkey::Pubkey;
6use solana_rpc_client::rpc_client::RpcClient;
7
8use crate::rpc::errors::RpcError;
9
10pub fn load_lookup_table(
21 client: &RpcClient,
22 lookup_table_address: &Pubkey,
23) -> Result<AddressLookupTableAccount, RpcError> {
24 let raw_account = client.get_account(lookup_table_address)?;
25 let address_lookup_table = AddressLookupTable::deserialize(&raw_account.data).map_err(|e| {
26 RpcError::CustomError(format!("Failed to deserialize AddressLookupTable: {e:?}"))
27 })?;
28 let address_lookup_table_account = AddressLookupTableAccount {
29 key: lookup_table_address.to_bytes().into(),
30 addresses: address_lookup_table
31 .addresses
32 .iter()
33 .map(|p| p.to_bytes().into())
34 .collect(),
35 };
36 Ok(address_lookup_table_account)
37}