airdrop-api 0.1.0

Mint and Airdrop Framework on Solana for Sovereign Individuals
Documentation
use solana_program::pubkey::Pubkey;
use steel::*;

/// Config is a singleton account which manages program global variables.
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct Config {
    /// Program admin authority (can update config, withdraw fees)
    pub admin: Pubkey,

    /// Fee account PDA (where collected fees accumulate)
    pub fee_account: Pubkey,

    /// Fee for creating a new mint (in lamports)
    pub mint_fee_lamports: u64,

    /// Fee per recipient allocation (in lamports)
    /// Charged when creating allocation accounts (Mode 0)
    pub allocation_fee_per_recipient_lamports: u64,

    /// Fee per recipient for merkle tree campaigns (in lamports)
    /// Charged when setting merkle root in CreateCampaign
    pub merkle_fee_per_recipient_lamports: u64,

    /// Fee per recipient for direct transfers (in lamports)
    /// Charged when campaign owner transfers tokens directly via DirectTransfer
    pub direct_transfer_fee_per_recipient_lamports: u64,

    /// Total fees collected (for tracking/transparency, in lamports)
    pub total_fees_collected: u64,

    /// Last update timestamp
    pub updated_at: i64,
}

use crate::consts::AirdropAccount;
account!(AirdropAccount, Config);