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,
)
}
}