use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub struct InsiderTrade {
pub symbol: Option<String>,
pub issuer_name: Option<String>,
pub insider_name: Option<String>,
pub insider_cik: Option<String>,
pub is_director: bool,
pub is_officer: bool,
pub is_ten_percent_owner: bool,
pub officer_title: Option<String>,
pub form_type: Option<String>,
pub accession_number: Option<String>,
pub url: Option<String>,
pub security_title: Option<String>,
pub transaction_date: Option<String>,
pub transaction_code: Option<String>,
pub acquired_disposed: Option<String>,
pub shares: Option<f64>,
pub price_per_share: Option<f64>,
pub shares_owned_after: Option<f64>,
pub is_derivative: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub struct InstitutionalHolding {
pub issuer_name: Option<String>,
pub title_of_class: Option<String>,
pub cusip: Option<String>,
pub value: Option<f64>,
pub shares: Option<f64>,
pub share_type: Option<String>,
pub put_call: Option<String>,
pub investment_discretion: Option<String>,
pub voting_sole: Option<f64>,
pub voting_shared: Option<f64>,
pub voting_none: Option<f64>,
pub accession_number: Option<String>,
pub report_date: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub struct CongressionalTrade {
pub symbol: Option<String>,
pub first_name: Option<String>,
pub last_name: Option<String>,
pub office: Option<String>,
pub district: Option<String>,
pub trade_type: Option<String>,
pub amount: Option<String>,
pub asset_description: Option<String>,
pub transaction_date: Option<String>,
pub disclosure_date: Option<String>,
pub link: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub struct FailToDeliver {
pub symbol: Option<String>,
pub date: Option<String>,
pub quantity: Option<f64>,
pub price: Option<f64>,
pub name: Option<String>,
pub description: Option<String>,
}