carbon-token-program-decoder 1.0.0

Token Program Decoder
Documentation
//! This code was AUTOGENERATED using the Codama library.
use crate::{TokenProgramDecoder, PROGRAM_ID};

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

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

pub mod amount_to_ui_amount;
pub mod approve;
pub mod approve_checked;
pub mod batch;
pub mod burn;
pub mod burn_checked;
pub mod close_account;
pub mod freeze_account;
pub mod get_account_data_size;
pub mod initialize_account;
pub mod initialize_account2;
pub mod initialize_account3;
pub mod initialize_immutable_owner;
pub mod initialize_mint;
pub mod initialize_mint2;
pub mod initialize_multisig;
pub mod initialize_multisig2;
pub mod mint_to;
pub mod mint_to_checked;
pub mod revoke;
pub mod set_authority;
pub mod sync_native;
pub mod thaw_account;
pub mod transfer;
pub mod transfer_checked;
pub mod ui_amount_to_amount;
pub mod unwrap_lamports;
pub mod withdraw_excess_lamports;

pub use self::{
    amount_to_ui_amount::*, approve::*, approve_checked::*, batch::*, burn::*, burn_checked::*,
    close_account::*, freeze_account::*, get_account_data_size::*, initialize_account::*,
    initialize_account2::*, initialize_account3::*, initialize_immutable_owner::*,
    initialize_mint::*, initialize_mint2::*, initialize_multisig::*, initialize_multisig2::*,
    mint_to::*, mint_to_checked::*, revoke::*, set_authority::*, sync_native::*, thaw_account::*,
    transfer::*, transfer_checked::*, ui_amount_to_amount::*, unwrap_lamports::*,
    withdraw_excess_lamports::*,
};

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum TokenProgramInstruction {
    AmountToUiAmount {
        program_id: solana_pubkey::Pubkey,
        data: AmountToUiAmount,
        accounts: AmountToUiAmountInstructionAccounts,
    },
    Approve {
        program_id: solana_pubkey::Pubkey,
        data: Approve,
        accounts: ApproveInstructionAccounts,
    },
    ApproveChecked {
        program_id: solana_pubkey::Pubkey,
        data: ApproveChecked,
        accounts: ApproveCheckedInstructionAccounts,
    },
    Batch {
        program_id: solana_pubkey::Pubkey,
        data: Batch,
        accounts: BatchInstructionAccounts,
    },
    Burn {
        program_id: solana_pubkey::Pubkey,
        data: Burn,
        accounts: BurnInstructionAccounts,
    },
    BurnChecked {
        program_id: solana_pubkey::Pubkey,
        data: BurnChecked,
        accounts: BurnCheckedInstructionAccounts,
    },
    CloseAccount {
        program_id: solana_pubkey::Pubkey,
        data: CloseAccount,
        accounts: CloseAccountInstructionAccounts,
    },
    FreezeAccount {
        program_id: solana_pubkey::Pubkey,
        data: FreezeAccount,
        accounts: FreezeAccountInstructionAccounts,
    },
    GetAccountDataSize {
        program_id: solana_pubkey::Pubkey,
        data: GetAccountDataSize,
        accounts: GetAccountDataSizeInstructionAccounts,
    },
    InitializeAccount {
        program_id: solana_pubkey::Pubkey,
        data: InitializeAccount,
        accounts: InitializeAccountInstructionAccounts,
    },
    InitializeAccount2 {
        program_id: solana_pubkey::Pubkey,
        data: InitializeAccount2,
        accounts: InitializeAccount2InstructionAccounts,
    },
    InitializeAccount3 {
        program_id: solana_pubkey::Pubkey,
        data: InitializeAccount3,
        accounts: InitializeAccount3InstructionAccounts,
    },
    InitializeImmutableOwner {
        program_id: solana_pubkey::Pubkey,
        data: InitializeImmutableOwner,
        accounts: InitializeImmutableOwnerInstructionAccounts,
    },
    InitializeMint {
        program_id: solana_pubkey::Pubkey,
        data: InitializeMint,
        accounts: InitializeMintInstructionAccounts,
    },
    InitializeMint2 {
        program_id: solana_pubkey::Pubkey,
        data: InitializeMint2,
        accounts: InitializeMint2InstructionAccounts,
    },
    InitializeMultisig {
        program_id: solana_pubkey::Pubkey,
        data: InitializeMultisig,
        accounts: InitializeMultisigInstructionAccounts,
    },
    InitializeMultisig2 {
        program_id: solana_pubkey::Pubkey,
        data: InitializeMultisig2,
        accounts: InitializeMultisig2InstructionAccounts,
    },
    MintTo {
        program_id: solana_pubkey::Pubkey,
        data: MintTo,
        accounts: MintToInstructionAccounts,
    },
    MintToChecked {
        program_id: solana_pubkey::Pubkey,
        data: MintToChecked,
        accounts: MintToCheckedInstructionAccounts,
    },
    Revoke {
        program_id: solana_pubkey::Pubkey,
        data: Revoke,
        accounts: RevokeInstructionAccounts,
    },
    SetAuthority {
        program_id: solana_pubkey::Pubkey,
        data: SetAuthority,
        accounts: SetAuthorityInstructionAccounts,
    },
    SyncNative {
        program_id: solana_pubkey::Pubkey,
        data: SyncNative,
        accounts: SyncNativeInstructionAccounts,
    },
    ThawAccount {
        program_id: solana_pubkey::Pubkey,
        data: ThawAccount,
        accounts: ThawAccountInstructionAccounts,
    },
    Transfer {
        program_id: solana_pubkey::Pubkey,
        data: Transfer,
        accounts: TransferInstructionAccounts,
    },
    TransferChecked {
        program_id: solana_pubkey::Pubkey,
        data: TransferChecked,
        accounts: TransferCheckedInstructionAccounts,
    },
    UiAmountToAmount {
        program_id: solana_pubkey::Pubkey,
        data: UiAmountToAmount,
        accounts: UiAmountToAmountInstructionAccounts,
    },
    UnwrapLamports {
        program_id: solana_pubkey::Pubkey,
        data: UnwrapLamports,
        accounts: UnwrapLamportsInstructionAccounts,
    },
    WithdrawExcessLamports {
        program_id: solana_pubkey::Pubkey,
        data: WithdrawExcessLamports,
        accounts: WithdrawExcessLamportsInstructionAccounts,
    },
}

impl carbon_core::instruction::InstructionDecoder<'_> for TokenProgramDecoder {
    type InstructionType = TokenProgramInstruction;

    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,
            TokenProgramInstruction::AmountToUiAmount => AmountToUiAmount,
            TokenProgramInstruction::Approve => Approve,
            TokenProgramInstruction::ApproveChecked => ApproveChecked,
            TokenProgramInstruction::Batch => Batch,
            TokenProgramInstruction::Burn => Burn,
            TokenProgramInstruction::BurnChecked => BurnChecked,
            TokenProgramInstruction::CloseAccount => CloseAccount,
            TokenProgramInstruction::FreezeAccount => FreezeAccount,
            TokenProgramInstruction::GetAccountDataSize => GetAccountDataSize,
            TokenProgramInstruction::InitializeAccount => InitializeAccount,
            TokenProgramInstruction::InitializeAccount2 => InitializeAccount2,
            TokenProgramInstruction::InitializeAccount3 => InitializeAccount3,
            TokenProgramInstruction::InitializeImmutableOwner => InitializeImmutableOwner,
            TokenProgramInstruction::InitializeMint => InitializeMint,
            TokenProgramInstruction::InitializeMint2 => InitializeMint2,
            TokenProgramInstruction::InitializeMultisig => InitializeMultisig,
            TokenProgramInstruction::InitializeMultisig2 => InitializeMultisig2,
            TokenProgramInstruction::MintTo => MintTo,
            TokenProgramInstruction::MintToChecked => MintToChecked,
            TokenProgramInstruction::Revoke => Revoke,
            TokenProgramInstruction::SetAuthority => SetAuthority,
            TokenProgramInstruction::SyncNative => SyncNative,
            TokenProgramInstruction::ThawAccount => ThawAccount,
            TokenProgramInstruction::Transfer => Transfer,
            TokenProgramInstruction::TransferChecked => TransferChecked,
            TokenProgramInstruction::UiAmountToAmount => UiAmountToAmount,
            TokenProgramInstruction::UnwrapLamports => UnwrapLamports,
            TokenProgramInstruction::WithdrawExcessLamports => WithdrawExcessLamports,
        )
    }
}