use crate::streaming::event_parser::common::EventMetadata;
use serde::{Deserialize, Serialize};
use solana_sdk::pubkey::Pubkey;
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct ParserSdkErrorEvent {
pub metadata: EventMetadata,
pub message: String,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaWhirlpoolSwapEvent {
pub metadata: EventMetadata,
pub whirlpool: Pubkey,
pub input_amount: u64,
pub output_amount: u64,
pub a_to_b: bool,
pub pre_sqrt_price: u128,
pub post_sqrt_price: u128,
pub input_transfer_fee: u64,
pub output_transfer_fee: u64,
pub lp_fee: u64,
pub protocol_fee: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaWhirlpoolLiquidityIncreasedEvent {
pub metadata: EventMetadata,
pub whirlpool: Pubkey,
pub liquidity: u128,
pub token_a_amount: u64,
pub token_b_amount: u64,
pub position: Pubkey,
pub tick_lower_index: i32,
pub tick_upper_index: i32,
pub token_a_transfer_fee: u64,
pub token_b_transfer_fee: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaWhirlpoolLiquidityDecreasedEvent {
pub metadata: EventMetadata,
pub whirlpool: Pubkey,
pub liquidity: u128,
pub token_a_amount: u64,
pub token_b_amount: u64,
pub position: Pubkey,
pub tick_lower_index: i32,
pub tick_upper_index: i32,
pub token_a_transfer_fee: u64,
pub token_b_transfer_fee: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaWhirlpoolPoolInitializedEvent {
pub metadata: EventMetadata,
pub whirlpool: Pubkey,
pub whirlpools_config: Pubkey,
pub token_mint_a: Pubkey,
pub token_mint_b: Pubkey,
pub tick_spacing: u16,
pub token_program_a: Pubkey,
pub token_program_b: Pubkey,
pub decimals_a: u8,
pub decimals_b: u8,
pub initial_sqrt_price: u128,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaWhirlpoolAccountEvent {
pub metadata: EventMetadata,
pub pubkey: Pubkey,
pub executable: bool,
pub lamports: u64,
pub owner: Pubkey,
pub rent_epoch: u64,
pub whirlpool: OrcaWhirlpoolAccount,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaWhirlpoolAccount {
pub whirlpools_config: Pubkey,
pub whirlpool_bump: u8,
pub tick_spacing: u16,
pub tick_spacing_seed: [u8; 2],
pub fee_rate: u16,
pub protocol_fee_rate: u16,
pub liquidity: u128,
pub sqrt_price: u128,
pub tick_current_index: i32,
pub protocol_fee_owed_a: u64,
pub protocol_fee_owed_b: u64,
pub token_mint_a: Pubkey,
pub token_vault_a: Pubkey,
pub fee_growth_global_a: u128,
pub token_mint_b: Pubkey,
pub token_vault_b: Pubkey,
pub fee_growth_global_b: u128,
pub reward_last_updated_timestamp: u64,
pub reward_infos: [OrcaWhirlpoolRewardInfo; 3],
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaWhirlpoolRewardInfo {
pub mint: Pubkey,
pub vault: Pubkey,
pub authority: Pubkey,
pub emissions_per_second_x64: u128,
pub growth_global_x64: u128,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaPositionAccountEvent {
pub metadata: EventMetadata,
pub pubkey: Pubkey,
pub executable: bool,
pub lamports: u64,
pub owner: Pubkey,
pub rent_epoch: u64,
pub position: OrcaPositionAccount,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaPositionAccount {
pub whirlpool: Pubkey,
pub position_mint: Pubkey,
pub liquidity: u128,
pub tick_lower_index: i32,
pub tick_upper_index: i32,
pub fee_growth_checkpoint_a: u128,
pub fee_owed_a: u64,
pub fee_growth_checkpoint_b: u128,
pub fee_owed_b: u64,
pub reward_infos: [OrcaPositionRewardInfo; 3],
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaPositionRewardInfo {
pub growth_inside_checkpoint: u128,
pub amount_owed: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaTickArrayAccountEvent {
pub metadata: EventMetadata,
pub pubkey: Pubkey,
pub executable: bool,
pub lamports: u64,
pub owner: Pubkey,
pub rent_epoch: u64,
pub tick_array: OrcaTickArrayAccount,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaTickArrayAccount {
pub start_tick_index: i32,
pub ticks: Vec<OrcaTick>,
pub whirlpool: Pubkey,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaTick {
pub initialized: bool,
pub liquidity_net: i128,
pub liquidity_gross: u128,
pub fee_growth_outside_a: u128,
pub fee_growth_outside_b: u128,
pub reward_growths_outside: [u128; 3],
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaFeeTierAccountEvent {
pub metadata: EventMetadata,
pub pubkey: Pubkey,
pub executable: bool,
pub lamports: u64,
pub owner: Pubkey,
pub rent_epoch: u64,
pub fee_tier: OrcaFeeTierAccount,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaFeeTierAccount {
pub whirlpools_config: Pubkey,
pub tick_spacing: u16,
pub default_fee_rate: u16,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaWhirlpoolsConfigAccountEvent {
pub metadata: EventMetadata,
pub pubkey: Pubkey,
pub executable: bool,
pub lamports: u64,
pub owner: Pubkey,
pub rent_epoch: u64,
pub config: OrcaWhirlpoolsConfigAccount,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct OrcaWhirlpoolsConfigAccount {
pub fee_authority: Pubkey,
pub collect_protocol_fees_authority: Pubkey,
pub reward_emissions_super_authority: Pubkey,
pub default_protocol_fee_rate: u16,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDbcSwapEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub config: Pubkey,
pub trade_direction: u8,
pub has_referral: bool,
pub amount_in: u64,
pub minimum_amount_out: u64,
pub actual_input_amount: u64,
pub output_amount: u64,
pub next_sqrt_price: u128,
pub trading_fee: u64,
pub protocol_fee: u64,
pub referral_fee: u64,
pub current_timestamp: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDbcInitializePoolEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub config: Pubkey,
pub creator: Pubkey,
pub base_mint: Pubkey,
pub pool_type: u8,
pub activation_point: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDbcCurveCompleteEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub config: Pubkey,
pub base_reserve: u64,
pub quote_reserve: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraPoolsSwapEvent {
pub metadata: EventMetadata,
pub in_amount: u64,
pub out_amount: u64,
pub trade_fee: u64,
pub admin_fee: u64,
pub host_fee: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraPoolsAddLiquidityEvent {
pub metadata: EventMetadata,
pub lp_mint_amount: u64,
pub token_a_amount: u64,
pub token_b_amount: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraPoolsRemoveLiquidityEvent {
pub metadata: EventMetadata,
pub lp_unmint_amount: u64,
pub token_a_out_amount: u64,
pub token_b_out_amount: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraPoolsBootstrapLiquidityEvent {
pub metadata: EventMetadata,
pub lp_mint_amount: u64,
pub token_a_amount: u64,
pub token_b_amount: u64,
pub pool: Pubkey,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraPoolsPoolCreatedEvent {
pub metadata: EventMetadata,
pub lp_mint: Pubkey,
pub token_a_mint: Pubkey,
pub token_b_mint: Pubkey,
pub pool_type: u8,
pub pool: Pubkey,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraPoolsSetPoolFeesEvent {
pub metadata: EventMetadata,
pub trade_fee_numerator: u64,
pub trade_fee_denominator: u64,
pub owner_trade_fee_numerator: u64,
pub owner_trade_fee_denominator: u64,
pub pool: Pubkey,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDlmmSwapEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub from: Pubkey,
pub start_bin_id: i32,
pub end_bin_id: i32,
pub amount_in: u64,
pub amount_out: u64,
pub swap_for_y: bool,
pub fee: u64,
pub protocol_fee: u64,
pub fee_bps: u128,
pub host_fee: u64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDlmmAddLiquidityEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub from: Pubkey,
pub position: Pubkey,
pub amounts: [u64; 2],
pub active_bin_id: i32,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDlmmRemoveLiquidityEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub from: Pubkey,
pub position: Pubkey,
pub amounts: [u64; 2],
pub active_bin_id: i32,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDlmmInitializePoolEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub creator: Pubkey,
pub active_bin_id: i32,
pub bin_step: u16,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDlmmInitializeBinArrayEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub bin_array: Pubkey,
pub index: i64,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDlmmCreatePositionEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub position: Pubkey,
pub owner: Pubkey,
pub lower_bin_id: i32,
pub width: u32,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDlmmClosePositionEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub position: Pubkey,
pub owner: Pubkey,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct MeteoraDlmmClaimFeeEvent {
pub metadata: EventMetadata,
pub pool: Pubkey,
pub position: Pubkey,
pub owner: Pubkey,
pub fee_x: u64,
pub fee_y: u64,
}