1mod allocate;
2mod claim;
3mod create_campaign;
4mod create_mint;
5mod direct_transfer;
6mod initialize;
7mod mint_tokens;
8mod replenish;
9mod update_config;
10mod withdraw_fees;
11
12use airdrop_api::instruction::*;
13use steel::*;
14
15pub fn process_instruction(
16 program_id: &Pubkey,
17 accounts: &[AccountInfo],
18 data: &[u8],
19) -> ProgramResult {
20 let (ix, data) = parse_instruction(&airdrop_api::ID, program_id, data)?;
21
22 match ix {
23 AirdropInstruction::CreateMint => create_mint::process_create_mint(accounts, data)?,
25 AirdropInstruction::CreateCampaign => {
26 create_campaign::process_create_campaign(accounts, data)?
27 }
28 AirdropInstruction::Allocate => allocate::process_allocate(accounts, data)?,
29 AirdropInstruction::Claim => claim::process_claim(accounts, data)?,
30 AirdropInstruction::DirectTransfer => {
31 direct_transfer::process_direct_transfer(accounts, data)?
32 }
33 AirdropInstruction::Replenish => replenish::process_replenish(accounts, data)?,
34 AirdropInstruction::MintTokens => mint_tokens::process_mint_tokens(accounts, data)?,
35
36 AirdropInstruction::Initialize => initialize::process_initialize(accounts, data)?,
38 AirdropInstruction::UpdateConfig => update_config::process_update_config(accounts, data)?,
39 AirdropInstruction::WithdrawFees => withdraw_fees::process_withdraw_fees(accounts, data)?,
40 }
41
42 Ok(())
43}
44
45entrypoint!(process_instruction);