carbon-jupiter-dca-decoder 2.0.0

Jupiter DCA Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use crate::{JupiterDcaDecoder, PROGRAM_ID};

#[cfg(feature = "postgres")]
pub mod postgres;

#[cfg(feature = "graphql")]
pub mod graphql;

pub mod close_dca;
pub mod cpi_event;
pub mod deposit;
pub mod end_and_close;
pub mod fulfill_dlmm_fill;
pub mod fulfill_flash_fill;
pub mod initiate_dlmm_fill;
pub mod initiate_flash_fill;
pub mod open_dca;
pub mod open_dca_v2;
pub mod transfer;
pub mod withdraw;
pub mod withdraw_fees;

pub use self::{
    close_dca::*, cpi_event::*, deposit::*, end_and_close::*, fulfill_dlmm_fill::*,
    fulfill_flash_fill::*, initiate_dlmm_fill::*, initiate_flash_fill::*, open_dca::*,
    open_dca_v2::*, transfer::*, withdraw::*, withdraw_fees::*,
};

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum JupiterDcaInstruction {
    CloseDca {
        program_id: solana_pubkey::Pubkey,
        data: CloseDca,
        accounts: CloseDcaInstructionAccounts,
    },
    Deposit {
        program_id: solana_pubkey::Pubkey,
        data: Deposit,
        accounts: DepositInstructionAccounts,
    },
    EndAndClose {
        program_id: solana_pubkey::Pubkey,
        data: EndAndClose,
        accounts: EndAndCloseInstructionAccounts,
    },
    FulfillDlmmFill {
        program_id: solana_pubkey::Pubkey,
        data: FulfillDlmmFill,
        accounts: FulfillDlmmFillInstructionAccounts,
    },
    FulfillFlashFill {
        program_id: solana_pubkey::Pubkey,
        data: FulfillFlashFill,
        accounts: FulfillFlashFillInstructionAccounts,
    },
    InitiateDlmmFill {
        program_id: solana_pubkey::Pubkey,
        data: InitiateDlmmFill,
        accounts: InitiateDlmmFillInstructionAccounts,
    },
    InitiateFlashFill {
        program_id: solana_pubkey::Pubkey,
        data: InitiateFlashFill,
        accounts: InitiateFlashFillInstructionAccounts,
    },
    OpenDca {
        program_id: solana_pubkey::Pubkey,
        data: OpenDca,
        accounts: OpenDcaInstructionAccounts,
    },
    OpenDcaV2 {
        program_id: solana_pubkey::Pubkey,
        data: OpenDcaV2,
        accounts: OpenDcaV2InstructionAccounts,
    },
    Transfer {
        program_id: solana_pubkey::Pubkey,
        data: Transfer,
        accounts: TransferInstructionAccounts,
    },
    Withdraw {
        program_id: solana_pubkey::Pubkey,
        data: Withdraw,
        accounts: WithdrawInstructionAccounts,
    },
    WithdrawFees {
        program_id: solana_pubkey::Pubkey,
        data: WithdrawFees,
        accounts: WithdrawFeesInstructionAccounts,
    },
    CpiEvent {
        program_id: solana_pubkey::Pubkey,
        data: CpiEvent,
        accounts: CpiEventInstructionAccounts,
    },
}

impl carbon_core::instruction::InstructionDecoder<'_> for JupiterDcaDecoder {
    type InstructionType = JupiterDcaInstruction;

    fn decode_instruction(
        &self,
        instruction: &solana_instruction::Instruction,
    ) -> Option<Self::InstructionType> {
        if instruction.program_id != PROGRAM_ID {
            return None;
        }

        carbon_core::try_decode_instructions!(
            instruction,
            PROGRAM_ID,
            JupiterDcaInstruction::CloseDca => CloseDca,
            JupiterDcaInstruction::Deposit => Deposit,
            JupiterDcaInstruction::EndAndClose => EndAndClose,
            JupiterDcaInstruction::FulfillDlmmFill => FulfillDlmmFill,
            JupiterDcaInstruction::FulfillFlashFill => FulfillFlashFill,
            JupiterDcaInstruction::InitiateDlmmFill => InitiateDlmmFill,
            JupiterDcaInstruction::InitiateFlashFill => InitiateFlashFill,
            JupiterDcaInstruction::OpenDca => OpenDca,
            JupiterDcaInstruction::OpenDcaV2 => OpenDcaV2,
            JupiterDcaInstruction::Transfer => Transfer,
            JupiterDcaInstruction::Withdraw => Withdraw,
            JupiterDcaInstruction::WithdrawFees => WithdrawFees,
            JupiterDcaInstruction::CpiEvent => CpiEvent,
        )
    }
}