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 {
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)?,
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);