use crate::{GavelDecoder, PROGRAM_ID};
#[cfg(feature = "postgres")]
pub mod postgres;
#[cfg(feature = "graphql")]
pub mod graphql;
pub mod add_liquidity;
pub mod initialize_lp_position;
pub mod initialize_pool;
pub mod log;
pub mod remove_liquidity;
pub mod renounce_liquidity;
pub mod swap;
pub mod transfer_liquidity;
pub mod withdraw_lp_fees;
pub mod withdraw_protocol_fees;
pub use self::{
add_liquidity::*, initialize_lp_position::*, initialize_pool::*, log::*, remove_liquidity::*,
renounce_liquidity::*, swap::*, transfer_liquidity::*, withdraw_lp_fees::*,
withdraw_protocol_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 GavelInstruction {
AddLiquidity {
program_id: solana_pubkey::Pubkey,
data: AddLiquidity,
accounts: AddLiquidityInstructionAccounts,
},
InitializeLpPosition {
program_id: solana_pubkey::Pubkey,
data: InitializeLpPosition,
accounts: InitializeLpPositionInstructionAccounts,
},
InitializePool {
program_id: solana_pubkey::Pubkey,
data: InitializePool,
accounts: InitializePoolInstructionAccounts,
},
Log {
program_id: solana_pubkey::Pubkey,
data: Log,
accounts: LogInstructionAccounts,
},
RemoveLiquidity {
program_id: solana_pubkey::Pubkey,
data: RemoveLiquidity,
accounts: RemoveLiquidityInstructionAccounts,
},
RenounceLiquidity {
program_id: solana_pubkey::Pubkey,
data: RenounceLiquidity,
accounts: RenounceLiquidityInstructionAccounts,
},
Swap {
program_id: solana_pubkey::Pubkey,
data: Swap,
accounts: SwapInstructionAccounts,
},
TransferLiquidity {
program_id: solana_pubkey::Pubkey,
data: TransferLiquidity,
accounts: TransferLiquidityInstructionAccounts,
},
WithdrawLpFees {
program_id: solana_pubkey::Pubkey,
data: WithdrawLpFees,
accounts: WithdrawLpFeesInstructionAccounts,
},
WithdrawProtocolFees {
program_id: solana_pubkey::Pubkey,
data: WithdrawProtocolFees,
accounts: WithdrawProtocolFeesInstructionAccounts,
},
}
impl carbon_core::instruction::InstructionDecoder<'_> for GavelDecoder {
type InstructionType = GavelInstruction;
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,
GavelInstruction::AddLiquidity => AddLiquidity,
GavelInstruction::InitializeLpPosition => InitializeLpPosition,
GavelInstruction::InitializePool => InitializePool,
GavelInstruction::Log => Log,
GavelInstruction::RemoveLiquidity => RemoveLiquidity,
GavelInstruction::RenounceLiquidity => RenounceLiquidity,
GavelInstruction::Swap => Swap,
GavelInstruction::TransferLiquidity => TransferLiquidity,
GavelInstruction::WithdrawLpFees => WithdrawLpFees,
GavelInstruction::WithdrawProtocolFees => WithdrawProtocolFees,
)
}
}