use super::*;
use carbon_core::{borsh, CarbonDeserialize};
#[derive(
CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
)]
pub struct AMM {
pub oracle: solana_pubkey::Pubkey,
pub historical_oracle_data: HistoricalOracleData,
pub base_asset_amount_per_lp: i128,
pub quote_asset_amount_per_lp: i128,
pub fee_pool: PoolBalance,
pub base_asset_reserve: u128,
pub quote_asset_reserve: u128,
pub concentration_coef: u128,
pub min_base_asset_reserve: u128,
pub max_base_asset_reserve: u128,
pub sqrt_k: u128,
pub peg_multiplier: u128,
pub terminal_quote_asset_reserve: u128,
pub base_asset_amount_long: i128,
pub base_asset_amount_short: i128,
pub base_asset_amount_with_amm: i128,
pub base_asset_amount_with_unsettled_lp: i128,
pub max_open_interest: u128,
pub quote_asset_amount: i128,
pub quote_entry_amount_long: i128,
pub quote_entry_amount_short: i128,
pub quote_break_even_amount_long: i128,
pub quote_break_even_amount_short: i128,
pub user_lp_shares: u128,
pub last_funding_rate: i64,
pub last_funding_rate_long: i64,
pub last_funding_rate_short: i64,
pub last24h_avg_funding_rate: i64,
pub total_fee: i128,
pub total_mm_fee: i128,
pub total_exchange_fee: u128,
pub total_fee_minus_distributions: i128,
pub total_fee_withdrawn: u128,
pub total_liquidation_fee: u128,
pub cumulative_funding_rate_long: i128,
pub cumulative_funding_rate_short: i128,
pub total_social_loss: u128,
pub ask_base_asset_reserve: u128,
pub ask_quote_asset_reserve: u128,
pub bid_base_asset_reserve: u128,
pub bid_quote_asset_reserve: u128,
pub last_oracle_normalised_price: i64,
pub last_oracle_reserve_price_spread_pct: i64,
pub last_bid_price_twap: u64,
pub last_ask_price_twap: u64,
pub last_mark_price_twap: u64,
pub last_mark_price_twap5min: u64,
pub last_update_slot: u64,
pub last_oracle_conf_pct: u64,
pub net_revenue_since_last_funding: i64,
pub last_funding_rate_ts: i64,
pub funding_period: i64,
pub order_step_size: u64,
pub order_tick_size: u64,
pub min_order_size: u64,
pub max_position_size: u64,
pub volume24h: u64,
pub long_intensity_volume: u64,
pub short_intensity_volume: u64,
pub last_trade_ts: i64,
pub mark_std: u64,
pub oracle_std: u64,
pub last_mark_price_twap_ts: i64,
pub base_spread: u32,
pub max_spread: u32,
pub long_spread: u32,
pub short_spread: u32,
pub long_intensity_count: u32,
pub short_intensity_count: u32,
pub max_fill_reserve_fraction: u16,
pub max_slippage_ratio: u16,
pub curve_update_intensity: u8,
pub amm_jit_intensity: u8,
pub oracle_source: OracleSource,
pub last_oracle_valid: bool,
pub target_base_asset_amount_per_lp: i32,
pub per_lp_base: i8,
pub padding1: u8,
pub padding2: u16,
pub total_fee_earned_per_lp: u64,
pub net_unsettled_funding_pnl: i64,
pub quote_asset_amount_with_unsettled_lp: i64,
pub reference_price_offset: i32,
pub padding: [u8; 12],
}