Skip to main content

bulk_client/msgs/
liquidator.rs

1use solana_keypair::Pubkey;
2use std::collections::HashMap;
3use serde::{Deserialize, Serialize};
4use crate::transaction::ActionMeta;
5
6/// Per instrument liquidation strategy config
7#[derive(Debug, Default, Clone, Serialize, Deserialize)]
8pub struct LiqConfigByInstrument {
9    /// maximum notional exposure we are willing to take on
10    pub max_exposure: f64,
11    /// minimum premium above mid
12    pub premium_min: f64,
13    /// fee (bps) applied to computed liquidation price
14    pub fee: f64,
15
16    /// maximum ADL absorption
17    pub max_adl_notional: f64,
18    /// maximum ADL % taken
19    pub max_adl_percent: f64,
20}
21
22/// Liquidation and ADL related config
23#[derive(Debug, Default, Clone, Serialize, Deserialize)]
24pub struct LiqConfig {
25    #[serde(with = "crate::msgs::serde_pubkey")]
26    pub owner: Pubkey,
27    /// maximum cross exposure across assets
28    pub cross_exposure: f64,
29    /// Scoring skew (P&L vs leverage)
30    pub scoring_skew: f64,
31    /// % of volume to take <- strategy specific
32    pub percent_volume: f64,
33    /// configuration per instrument
34    pub instrument: HashMap<String, LiqConfigByInstrument>,
35
36    #[serde(skip)]
37    pub meta: ActionMeta,
38}