use serde::Serialize;
pub type Num = f64;
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct IncomeStatementRow {
pub period_end: i64,
pub total_revenue: Option<Num>,
pub gross_profit: Option<Num>,
pub operating_income: Option<Num>,
pub net_income: Option<Num>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct BalanceSheetRow {
pub period_end: i64,
pub total_assets: Option<Num>,
pub total_liabilities: Option<Num>,
pub total_equity: Option<Num>,
pub cash: Option<Num>,
pub long_term_debt: Option<Num>,
pub shares_outstanding: Option<u64>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct CashflowRow {
pub period_end: i64,
pub operating_cashflow: Option<Num>,
pub capital_expenditures: Option<Num>,
pub free_cash_flow: Option<Num>,
pub net_income: Option<Num>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct Earnings {
pub yearly: Vec<EarningsYear>,
pub quarterly: Vec<EarningsQuarter>,
pub quarterly_eps: Vec<EarningsQuarterEps>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct EarningsYear {
pub year: i32,
pub revenue: Option<Num>,
pub earnings: Option<Num>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct EarningsQuarter {
pub period: String,
pub revenue: Option<Num>,
pub earnings: Option<Num>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct EarningsQuarterEps {
pub period: String,
pub actual: Option<Num>,
pub estimate: Option<Num>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct Calendar {
pub earnings_dates: Vec<i64>,
pub ex_dividend_date: Option<i64>,
pub dividend_date: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct ShareCount {
pub date: i64,
pub shares: u64,
}