use serde::{Deserialize, Serialize};
use solana_keypair::Pubkey;
use crate::common::instrument_config::InstrumentConfig;
use crate::transaction::ActionMeta;
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct LiquidationConfig {
pub settlement_ccy: String,
pub adl_bias: f64,
pub maxdepth: f64,
pub sweep_residual: usize,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
pub struct RiskVaultConfig {
#[cfg_attr(feature = "serde", serde(with = "crate::deser::serde_pubkey"))]
pub owner: Pubkey,
pub allocations: InstrumentConfig<f64>,
pub liquidity: InstrumentConfig<f64>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct RiskConfigChange {
pub max_loss: f64,
pub eloss_floor: f64,
pub max_pliq: f64,
pub margin_buffer: f64,
pub liquidation: LiquidationConfig,
pub vault: RiskVaultConfig,
#[serde(skip)]
pub meta: ActionMeta,
}