#[non_exhaustive]pub struct SystemAccountMetaConfig {
pub self_program: Pubkey,
pub sol_compression_recipient: Option<Pubkey>,
pub sol_pool_pda: Option<Pubkey>,
}Expand description
Configuration for Light system program accounts when building instructions.
This struct specifies which system accounts to include when using
PackedAccounts::add_system_accounts()
or PackedAccounts::add_system_accounts_v2().
§Required Fields
self_program: Your program’s ID (the one calling the Light system program). Used to derive the CPI signer PDA.
§Optional Fields
-
cpi_context: CPI context account for batched operations (v2 only). Required when using CPI context for multi-step compressed account operations. -
sol_compression_recipient: Account to receive decompressed SOL. Required when decompressing SOL from compressed accounts. -
sol_pool_pda: SOL pool PDA for SOL compression/decompression. Required when compressing or decompressing SOL.
§Examples
Basic usage (no SOL operations):
let program_id = Pubkey::new_unique();
let config = SystemAccountMetaConfig::new(program_id);With CPI context (v2 batched operations):
let program_id = Pubkey::new_unique();
let cpi_context_account = Pubkey::new_unique();
let config = SystemAccountMetaConfig::new_with_cpi_context(program_id, cpi_context_account);With SOL compression:
let program_id = Pubkey::new_unique();
let sol_pool_pda = Pubkey::new_unique();
let recipient = Pubkey::new_unique();
let mut config = SystemAccountMetaConfig::new(program_id);
config.sol_pool_pda = Some(sol_pool_pda);
config.sol_compression_recipient = Some(recipient);Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.self_program: PubkeyYour program’s ID (required). Used to derive the CPI signer PDA.
sol_compression_recipient: Option<Pubkey>Optional account to receive decompressed SOL.
sol_pool_pda: Option<Pubkey>Optional SOL pool PDA for SOL compression/decompression.
Implementations§
Trait Implementations§
Source§impl Clone for SystemAccountMetaConfig
impl Clone for SystemAccountMetaConfig
Source§fn clone(&self) -> SystemAccountMetaConfig
fn clone(&self) -> SystemAccountMetaConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SystemAccountMetaConfig
impl Debug for SystemAccountMetaConfig
Source§impl Default for SystemAccountMetaConfig
impl Default for SystemAccountMetaConfig
Source§fn default() -> SystemAccountMetaConfig
fn default() -> SystemAccountMetaConfig
impl Copy for SystemAccountMetaConfig
Auto Trait Implementations§
impl Freeze for SystemAccountMetaConfig
impl RefUnwindSafe for SystemAccountMetaConfig
impl Send for SystemAccountMetaConfig
impl Sync for SystemAccountMetaConfig
impl Unpin for SystemAccountMetaConfig
impl UnwindSafe for SystemAccountMetaConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more