light_token_interface/instructions/mint_action/decompress_mint.rs
1use light_zero_copy::ZeroCopy;
2
3use crate::{AnchorDeserialize, AnchorSerialize};
4
5/// Action to decompress a compressed mint to a Mint Solana account.
6/// Creates a Mint PDA that becomes the source of truth for the mint state.
7///
8/// Mint is ALWAYS compressible - `rent_payment` must be >= 2.
9/// rent_payment == 0 or 1 is rejected (epoch boundary edge case).
10#[repr(C)]
11#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, ZeroCopy)]
12pub struct DecompressMintAction {
13 /// Rent payment in epochs (prepaid).
14 pub rent_payment: u8,
15 /// Lamports allocated for future write operations (top-up per write).
16 /// Must not exceed config.rent_config.max_top_up.
17 pub write_top_up: u32,
18}