carbon-sharky-decoder 2.0.0

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

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

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

pub mod add_liquidity_token_pool;
pub mod close_escrow_value_mint_ata_admin;
pub mod close_nft_list;
pub mod close_order_book;
pub mod close_token_orderbook;
pub mod close_token_pool;
pub mod create_nft_list;
pub mod create_order_book;
pub mod create_program_version;
pub mod create_token_orderbook;
pub mod create_token_pool;
pub mod extend_loan_core;
pub mod extend_loan_v3;
pub mod extend_loan_v3_compressed;
pub mod extend_token_loan;
pub mod foreclose_loan_core;
pub mod foreclose_loan_v3;
pub mod foreclose_loan_v3_compressed;
pub mod foreclose_token_loan;
pub mod offer_loan;
pub mod repay_loan_core;
pub mod repay_loan_v3;
pub mod repay_loan_v3_compressed;
pub mod repay_token_loan;
pub mod rescind_loan;
pub mod take_loan_core;
pub mod take_loan_v3;
pub mod take_loan_v3_compressed;
pub mod take_token_loan;
pub mod update_nft_list;
pub mod update_order_book;
pub mod update_program_version;
pub mod update_token_orderbook;
pub mod update_token_pool;
pub mod withdraw_liquidity_token_pool;

pub use self::{
    add_liquidity_token_pool::*, close_escrow_value_mint_ata_admin::*, close_nft_list::*,
    close_order_book::*, close_token_orderbook::*, close_token_pool::*, create_nft_list::*,
    create_order_book::*, create_program_version::*, create_token_orderbook::*,
    create_token_pool::*, extend_loan_core::*, extend_loan_v3::*, extend_loan_v3_compressed::*,
    extend_token_loan::*, foreclose_loan_core::*, foreclose_loan_v3::*,
    foreclose_loan_v3_compressed::*, foreclose_token_loan::*, offer_loan::*, repay_loan_core::*,
    repay_loan_v3::*, repay_loan_v3_compressed::*, repay_token_loan::*, rescind_loan::*,
    take_loan_core::*, take_loan_v3::*, take_loan_v3_compressed::*, take_token_loan::*,
    update_nft_list::*, update_order_book::*, update_program_version::*, update_token_orderbook::*,
    update_token_pool::*, withdraw_liquidity_token_pool::*,
};

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[cfg_attr(feature = "serde", serde(tag = "type", content = "data"))]
pub enum SharkyInstruction {
    AddLiquidityTokenPool {
        program_id: solana_pubkey::Pubkey,
        data: AddLiquidityTokenPool,
        accounts: AddLiquidityTokenPoolInstructionAccounts,
    },
    CloseEscrowValueMintAtaAdmin {
        program_id: solana_pubkey::Pubkey,
        data: CloseEscrowValueMintAtaAdmin,
        accounts: CloseEscrowValueMintAtaAdminInstructionAccounts,
    },
    CloseNftList {
        program_id: solana_pubkey::Pubkey,
        data: CloseNftList,
        accounts: CloseNftListInstructionAccounts,
    },
    CloseOrderBook {
        program_id: solana_pubkey::Pubkey,
        data: CloseOrderBook,
        accounts: CloseOrderBookInstructionAccounts,
    },
    CloseTokenOrderbook {
        program_id: solana_pubkey::Pubkey,
        data: CloseTokenOrderbook,
        accounts: CloseTokenOrderbookInstructionAccounts,
    },
    CloseTokenPool {
        program_id: solana_pubkey::Pubkey,
        data: CloseTokenPool,
        accounts: CloseTokenPoolInstructionAccounts,
    },
    CreateNftList {
        program_id: solana_pubkey::Pubkey,
        data: CreateNftList,
        accounts: CreateNftListInstructionAccounts,
    },
    CreateOrderBook {
        program_id: solana_pubkey::Pubkey,
        data: CreateOrderBook,
        accounts: CreateOrderBookInstructionAccounts,
    },
    CreateProgramVersion {
        program_id: solana_pubkey::Pubkey,
        data: CreateProgramVersion,
        accounts: CreateProgramVersionInstructionAccounts,
    },
    CreateTokenOrderbook {
        program_id: solana_pubkey::Pubkey,
        data: CreateTokenOrderbook,
        accounts: CreateTokenOrderbookInstructionAccounts,
    },
    CreateTokenPool {
        program_id: solana_pubkey::Pubkey,
        data: CreateTokenPool,
        accounts: CreateTokenPoolInstructionAccounts,
    },
    ExtendLoanCore {
        program_id: solana_pubkey::Pubkey,
        data: ExtendLoanCore,
        accounts: ExtendLoanCoreInstructionAccounts,
    },
    ExtendLoanV3 {
        program_id: solana_pubkey::Pubkey,
        data: ExtendLoanV3,
        accounts: ExtendLoanV3InstructionAccounts,
    },
    ExtendLoanV3Compressed {
        program_id: solana_pubkey::Pubkey,
        data: ExtendLoanV3Compressed,
        accounts: ExtendLoanV3CompressedInstructionAccounts,
    },
    ExtendTokenLoan {
        program_id: solana_pubkey::Pubkey,
        data: ExtendTokenLoan,
        accounts: ExtendTokenLoanInstructionAccounts,
    },
    ForecloseLoanCore {
        program_id: solana_pubkey::Pubkey,
        data: ForecloseLoanCore,
        accounts: ForecloseLoanCoreInstructionAccounts,
    },
    ForecloseLoanV3 {
        program_id: solana_pubkey::Pubkey,
        data: ForecloseLoanV3,
        accounts: ForecloseLoanV3InstructionAccounts,
    },
    ForecloseLoanV3Compressed {
        program_id: solana_pubkey::Pubkey,
        data: ForecloseLoanV3Compressed,
        accounts: ForecloseLoanV3CompressedInstructionAccounts,
    },
    ForecloseTokenLoan {
        program_id: solana_pubkey::Pubkey,
        data: ForecloseTokenLoan,
        accounts: ForecloseTokenLoanInstructionAccounts,
    },
    OfferLoan {
        program_id: solana_pubkey::Pubkey,
        data: OfferLoan,
        accounts: OfferLoanInstructionAccounts,
    },
    RepayLoanCore {
        program_id: solana_pubkey::Pubkey,
        data: RepayLoanCore,
        accounts: RepayLoanCoreInstructionAccounts,
    },
    RepayLoanV3 {
        program_id: solana_pubkey::Pubkey,
        data: RepayLoanV3,
        accounts: RepayLoanV3InstructionAccounts,
    },
    RepayLoanV3Compressed {
        program_id: solana_pubkey::Pubkey,
        data: RepayLoanV3Compressed,
        accounts: RepayLoanV3CompressedInstructionAccounts,
    },
    RepayTokenLoan {
        program_id: solana_pubkey::Pubkey,
        data: RepayTokenLoan,
        accounts: RepayTokenLoanInstructionAccounts,
    },
    RescindLoan {
        program_id: solana_pubkey::Pubkey,
        data: RescindLoan,
        accounts: RescindLoanInstructionAccounts,
    },
    TakeLoanCore {
        program_id: solana_pubkey::Pubkey,
        data: TakeLoanCore,
        accounts: TakeLoanCoreInstructionAccounts,
    },
    TakeLoanV3 {
        program_id: solana_pubkey::Pubkey,
        data: TakeLoanV3,
        accounts: TakeLoanV3InstructionAccounts,
    },
    TakeLoanV3Compressed {
        program_id: solana_pubkey::Pubkey,
        data: TakeLoanV3Compressed,
        accounts: TakeLoanV3CompressedInstructionAccounts,
    },
    TakeTokenLoan {
        program_id: solana_pubkey::Pubkey,
        data: TakeTokenLoan,
        accounts: TakeTokenLoanInstructionAccounts,
    },
    UpdateNftList {
        program_id: solana_pubkey::Pubkey,
        data: UpdateNftList,
        accounts: UpdateNftListInstructionAccounts,
    },
    UpdateOrderBook {
        program_id: solana_pubkey::Pubkey,
        data: UpdateOrderBook,
        accounts: UpdateOrderBookInstructionAccounts,
    },
    UpdateProgramVersion {
        program_id: solana_pubkey::Pubkey,
        data: UpdateProgramVersion,
        accounts: UpdateProgramVersionInstructionAccounts,
    },
    UpdateTokenOrderbook {
        program_id: solana_pubkey::Pubkey,
        data: UpdateTokenOrderbook,
        accounts: UpdateTokenOrderbookInstructionAccounts,
    },
    UpdateTokenPool {
        program_id: solana_pubkey::Pubkey,
        data: UpdateTokenPool,
        accounts: UpdateTokenPoolInstructionAccounts,
    },
    WithdrawLiquidityTokenPool {
        program_id: solana_pubkey::Pubkey,
        data: WithdrawLiquidityTokenPool,
        accounts: WithdrawLiquidityTokenPoolInstructionAccounts,
    },
}

impl carbon_core::instruction::InstructionDecoder<'_> for SharkyDecoder {
    type InstructionType = SharkyInstruction;

    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,
            SharkyInstruction::AddLiquidityTokenPool => AddLiquidityTokenPool,
            SharkyInstruction::CloseEscrowValueMintAtaAdmin => CloseEscrowValueMintAtaAdmin,
            SharkyInstruction::CloseNftList => CloseNftList,
            SharkyInstruction::CloseOrderBook => CloseOrderBook,
            SharkyInstruction::CloseTokenOrderbook => CloseTokenOrderbook,
            SharkyInstruction::CloseTokenPool => CloseTokenPool,
            SharkyInstruction::CreateNftList => CreateNftList,
            SharkyInstruction::CreateOrderBook => CreateOrderBook,
            SharkyInstruction::CreateProgramVersion => CreateProgramVersion,
            SharkyInstruction::CreateTokenOrderbook => CreateTokenOrderbook,
            SharkyInstruction::CreateTokenPool => CreateTokenPool,
            SharkyInstruction::ExtendLoanCore => ExtendLoanCore,
            SharkyInstruction::ExtendLoanV3 => ExtendLoanV3,
            SharkyInstruction::ExtendLoanV3Compressed => ExtendLoanV3Compressed,
            SharkyInstruction::ExtendTokenLoan => ExtendTokenLoan,
            SharkyInstruction::ForecloseLoanCore => ForecloseLoanCore,
            SharkyInstruction::ForecloseLoanV3 => ForecloseLoanV3,
            SharkyInstruction::ForecloseLoanV3Compressed => ForecloseLoanV3Compressed,
            SharkyInstruction::ForecloseTokenLoan => ForecloseTokenLoan,
            SharkyInstruction::OfferLoan => OfferLoan,
            SharkyInstruction::RepayLoanCore => RepayLoanCore,
            SharkyInstruction::RepayLoanV3 => RepayLoanV3,
            SharkyInstruction::RepayLoanV3Compressed => RepayLoanV3Compressed,
            SharkyInstruction::RepayTokenLoan => RepayTokenLoan,
            SharkyInstruction::RescindLoan => RescindLoan,
            SharkyInstruction::TakeLoanCore => TakeLoanCore,
            SharkyInstruction::TakeLoanV3 => TakeLoanV3,
            SharkyInstruction::TakeLoanV3Compressed => TakeLoanV3Compressed,
            SharkyInstruction::TakeTokenLoan => TakeTokenLoan,
            SharkyInstruction::UpdateNftList => UpdateNftList,
            SharkyInstruction::UpdateOrderBook => UpdateOrderBook,
            SharkyInstruction::UpdateProgramVersion => UpdateProgramVersion,
            SharkyInstruction::UpdateTokenOrderbook => UpdateTokenOrderbook,
            SharkyInstruction::UpdateTokenPool => UpdateTokenPool,
            SharkyInstruction::WithdrawLiquidityTokenPool => WithdrawLiquidityTokenPool,
        )
    }
}