carbon_virtuals_decoder/instructions/
mod.rs1use crate::PROGRAM_ID;
2
3use super::VirtualsDecoder;
4pub mod buy;
5pub mod buy_event;
6pub mod claim_fees;
7pub mod create_meteora_pool;
8pub mod graduation_event;
9pub mod initialize;
10pub mod initialize_meteora_accounts;
11pub mod launch;
12pub mod launch_event;
13pub mod sell;
14pub mod sell_event;
15pub mod update_pool_creator;
16
17#[derive(
18 carbon_core::InstructionType,
19 serde::Serialize,
20 serde::Deserialize,
21 PartialEq,
22 Eq,
23 Debug,
24 Clone,
25 Hash,
26)]
27pub enum VirtualsInstruction {
28 Buy(buy::Buy),
29 ClaimFees(claim_fees::ClaimFees),
30 CreateMeteoraPool(create_meteora_pool::CreateMeteoraPool),
31 Initialize(initialize::Initialize),
32 InitializeMeteoraAccounts(initialize_meteora_accounts::InitializeMeteoraAccounts),
33 Launch(launch::Launch),
34 Sell(sell::Sell),
35 UpdatePoolCreator(update_pool_creator::UpdatePoolCreator),
36 BuyEvent(buy_event::BuyEvent),
37 GraduationEvent(graduation_event::GraduationEvent),
38 LaunchEvent(launch_event::LaunchEvent),
39 SellEvent(sell_event::SellEvent),
40}
41
42impl carbon_core::instruction::InstructionDecoder<'_> for VirtualsDecoder {
43 type InstructionType = VirtualsInstruction;
44
45 fn decode_instruction(
46 &self,
47 instruction: &solana_instruction::Instruction,
48 ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
49 if !instruction.program_id.eq(&PROGRAM_ID) {
50 return None;
51 }
52
53 carbon_core::try_decode_instructions!(instruction,
54 VirtualsInstruction::Buy => buy::Buy,
55 VirtualsInstruction::ClaimFees => claim_fees::ClaimFees,
56 VirtualsInstruction::CreateMeteoraPool => create_meteora_pool::CreateMeteoraPool,
57 VirtualsInstruction::Initialize => initialize::Initialize,
58 VirtualsInstruction::InitializeMeteoraAccounts => initialize_meteora_accounts::InitializeMeteoraAccounts,
59 VirtualsInstruction::Launch => launch::Launch,
60 VirtualsInstruction::Sell => sell::Sell,
61 VirtualsInstruction::UpdatePoolCreator => update_pool_creator::UpdatePoolCreator,
62 VirtualsInstruction::BuyEvent => buy_event::BuyEvent,
63 VirtualsInstruction::GraduationEvent => graduation_event::GraduationEvent,
64 VirtualsInstruction::LaunchEvent => launch_event::LaunchEvent,
65 VirtualsInstruction::SellEvent => sell_event::SellEvent,
66 )
67 }
68}