gmsol_sdk/utils/
decode.rs1use gmsol_decode::{AccountAccess, DecodeError};
2use gmsol_solana_utils::utils::WithSlot;
3use solana_sdk::{account::Account, pubkey::Pubkey};
4
5pub struct KeyedAccount {
7 pub pubkey: Pubkey,
9 pub account: WithSlot<Account>,
11}
12
13impl AccountAccess for KeyedAccount {
14 fn owner(&self) -> Result<Pubkey, DecodeError> {
15 Ok(self.account.value().owner)
16 }
17
18 fn pubkey(&self) -> Result<Pubkey, DecodeError> {
19 Ok(self.pubkey)
20 }
21
22 fn lamports(&self) -> Result<u64, DecodeError> {
23 Ok(self.account.value().lamports)
24 }
25
26 fn data(&self) -> Result<&[u8], DecodeError> {
27 Ok(&self.account.value().data)
28 }
29
30 fn slot(&self) -> Result<u64, DecodeError> {
31 Ok(self.account.slot())
32 }
33}