use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub(crate) struct CotRow {
#[serde(default)]
pub market_and_exchange_names: Option<String>,
#[serde(default)]
pub cftc_contract_market_code: Option<String>,
#[serde(default)]
pub report_date_as_yyyy_mm_dd: Option<String>,
#[serde(default)]
pub open_interest_all: Option<String>,
#[serde(default)]
pub prod_merc_positions_long: Option<String>,
#[serde(default)]
pub prod_merc_positions_short: Option<String>,
#[serde(default)]
pub swap_positions_long_all: Option<String>,
#[serde(default, rename = "swap__positions_short_all")]
pub swap_positions_short_all: Option<String>,
#[serde(default, rename = "swap__positions_spread_all")]
pub swap_positions_spread_all: Option<String>,
#[serde(default)]
pub m_money_positions_long_all: Option<String>,
#[serde(default)]
pub m_money_positions_short_all: Option<String>,
#[serde(default)]
pub m_money_positions_spread: Option<String>,
#[serde(default)]
pub other_rept_positions_long: Option<String>,
#[serde(default)]
pub other_rept_positions_short: Option<String>,
#[serde(default)]
pub other_rept_positions_spread: Option<String>,
#[serde(default)]
pub tot_rept_positions_long_all: Option<String>,
#[serde(default)]
pub tot_rept_positions_short: Option<String>,
#[serde(default)]
pub nonrept_positions_long_all: Option<String>,
#[serde(default)]
pub nonrept_positions_short_all: Option<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub(crate) struct CftcError {
#[serde(default)]
pub message: Option<String>,
}