carbon_virtuals_decoder/instructions/
mod.rs

1use 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}