use {crate::types::WhirlpoolRewardInfo, solana_pubkey::Pubkey};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
pub struct Whirlpool {
pub discriminator: [u8; 8],
pub whirlpool_config: Pubkey,
pub whirlpool_bump: u8,
pub tick_spacing: u16,
pub fee_tier_index: u16,
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_a_mint: Pubkey,
pub token_a_vault: Pubkey,
pub fee_growth_global_a: u128,
pub token_b_mint: Pubkey,
pub token_b_vault: Pubkey,
pub fee_growth_global_b: u128,
pub reward_last_updated_timestamp: u64,
pub reward_infos: [WhirlpoolRewardInfo; 3],
}