airdrop 0.1.0

Mint and Airdrop Framework on Solana for Sovereign Individuals
Documentation
mod allocate;
mod claim;
mod create_campaign;
mod create_mint;
mod direct_transfer;
mod initialize;
mod mint_tokens;
mod replenish;
mod update_config;
mod withdraw_fees;

use airdrop_api::instruction::*;
use steel::*;

pub fn process_instruction(
    program_id: &Pubkey,
    accounts: &[AccountInfo],
    data: &[u8],
) -> ProgramResult {
    let (ix, data) = parse_instruction(&airdrop_api::ID, program_id, data)?;

    match ix {
        // Public instructions
        AirdropInstruction::CreateMint => create_mint::process_create_mint(accounts, data)?,
        AirdropInstruction::CreateCampaign => {
            create_campaign::process_create_campaign(accounts, data)?
        }
        AirdropInstruction::Allocate => allocate::process_allocate(accounts, data)?,
        AirdropInstruction::Claim => claim::process_claim(accounts, data)?,
        AirdropInstruction::DirectTransfer => {
            direct_transfer::process_direct_transfer(accounts, data)?
        }
        AirdropInstruction::Replenish => replenish::process_replenish(accounts, data)?,
        AirdropInstruction::MintTokens => mint_tokens::process_mint_tokens(accounts, data)?,

        // Admin instructions
        AirdropInstruction::Initialize => initialize::process_initialize(accounts, data)?,
        AirdropInstruction::UpdateConfig => update_config::process_update_config(accounts, data)?,
        AirdropInstruction::WithdrawFees => withdraw_fees::process_withdraw_fees(accounts, data)?,
    }

    Ok(())
}

entrypoint!(process_instruction);