use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct IncomeStatement {
pub date: String,
pub symbol: String,
pub reported_currency: String,
pub cik: String,
pub filling_date: String,
pub accepted_date: String,
pub calendar_year: String,
pub period: String,
pub revenue: i64,
pub cost_of_revenue: i64,
pub gross_profit: i64,
pub gross_profit_ratio: f64,
pub research_and_development_expenses: i64,
pub general_and_administrative_expenses: i64,
pub selling_and_marketing_expenses: i64,
pub selling_general_and_administrative_expenses: i64,
pub other_expenses: i64,
pub operating_expenses: i64,
pub cost_and_expenses: i64,
pub interest_income: i64,
pub interest_expense: i64,
pub depreciation_and_amortization: i64,
pub ebitda: i64,
pub ebitda_ratio: f64,
pub operating_income: i64,
pub operating_income_ratio: f64,
pub total_other_income_expenses_net: i64,
pub income_before_tax: i64,
pub income_before_tax_ratio: f64,
pub income_tax_expense: i64,
pub net_income: i64,
pub net_income_ratio: f64,
pub eps: f64,
pub eps_diluted: f64,
pub weighted_average_shs_out: i64,
pub weighted_average_shs_out_dil: i64,
pub link: String,
pub final_link: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct BalanceSheet {
pub date: String,
pub symbol: String,
pub reported_currency: String,
pub cik: String,
pub filling_date: String,
pub accepted_date: String,
pub calendar_year: String,
pub period: String,
pub cash_and_cash_equivalents: i64,
pub short_term_investments: i64,
pub cash_and_short_term_investments: i64,
pub net_receivables: i64,
pub inventory: i64,
pub other_current_assets: i64,
pub total_current_assets: i64,
pub property_plant_equipment_net: i64,
pub goodwill: i64,
pub intangible_assets: i64,
pub goodwill_and_intangible_assets: i64,
pub long_term_investments: i64,
pub tax_assets: i64,
pub other_non_current_assets: i64,
pub total_non_current_assets: i64,
pub other_assets: i64,
pub total_assets: i64,
pub account_payables: i64,
pub short_term_debt: i64,
pub tax_payables: i64,
pub deferred_revenue: i64,
pub other_current_liabilities: i64,
pub total_current_liabilities: i64,
pub long_term_debt: i64,
pub deferred_revenue_non_current: i64,
pub deferred_tax_liabilities_non_current: i64,
pub other_non_current_liabilities: i64,
pub total_non_current_liabilities: i64,
pub other_liabilities: i64,
pub capital_lease_obligations: i64,
pub total_liabilities: i64,
pub preferred_stock: i64,
pub common_stock: i64,
pub retained_earnings: i64,
pub accumulated_other_comprehensive_income_loss: i64,
pub othertotal_stockholders_equity: i64,
pub total_stockholders_equity: i64,
pub total_equity: i64,
pub total_liabilities_and_stockholders_equity: i64,
pub minority_interest: i64,
pub total_liabilities_and_total_equity: i64,
pub total_investments: i64,
pub total_debt: i64,
pub net_debt: i64,
pub link: String,
pub final_link: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct CashFlowStatement {
pub date: String,
pub symbol: String,
pub reported_currency: String,
pub cik: String,
pub filling_date: String,
pub accepted_date: String,
pub calendar_year: String,
pub period: String,
pub net_income: i64,
pub depreciation_and_amortization: i64,
pub deferred_income_tax: i64,
pub stock_based_compensation: i64,
pub change_in_working_capital: i64,
pub accounts_receivables: i64,
pub inventory: i64,
pub accounts_payables: i64,
pub other_working_capital: i64,
pub other_non_cash_items: i64,
pub net_cash_provided_by_operating_activities: i64,
pub investments_in_property_plant_and_equipment: i64,
pub acquisitions_net: i64,
pub purchases_of_investments: i64,
pub sales_maturities_of_investments: i64,
pub other_investing_activites: i64,
pub net_cash_used_for_investing_activites: i64,
pub debt_repayment: i64,
pub common_stock_issued: i64,
pub common_stock_repurchased: i64,
pub dividends_paid: i64,
pub other_financing_activites: i64,
pub net_cash_used_provided_by_financing_activities: i64,
pub effect_of_forex_changes_on_cash: i64,
pub net_change_in_cash: i64,
pub cash_at_end_of_period: i64,
pub cash_at_beginning_of_period: i64,
pub operating_cash_flow: i64,
pub capital_expenditure: i64,
pub free_cash_flow: i64,
pub link: String,
pub final_link: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct FinancialRatios {
pub symbol: String,
pub date: String,
pub calendar_year: String,
pub period: String,
pub current_ratio: f64,
pub quick_ratio: f64,
pub cash_ratio: f64,
pub days_of_sales_outstanding: f64,
pub days_of_inventory_outstanding: f64,
pub operating_cycle: f64,
pub days_of_payables_outstanding: f64,
pub cash_conversion_cycle: f64,
pub gross_profit_margin: f64,
pub operating_profit_margin: f64,
pub pretax_profit_margin: f64,
pub net_profit_margin: f64,
pub effective_tax_rate: f64,
pub return_on_assets: f64,
pub return_on_equity: f64,
pub return_on_capital_employed: f64,
pub net_income_per_ebt: f64,
pub ebt_per_ebit: f64,
pub ebit_per_revenue: f64,
pub debt_ratio: f64,
pub debt_equity_ratio: f64,
pub long_term_debt_to_capitalization: f64,
pub total_debt_to_capitalization: f64,
pub interest_coverage: f64,
pub cash_flow_to_debt_ratio: f64,
pub company_equity_multiplier: f64,
pub receivables_turnover: f64,
pub payables_turnover: f64,
pub inventory_turnover: f64,
pub fixed_asset_turnover: f64,
pub asset_turnover: f64,
pub operating_cash_flow_per_share: f64,
pub free_cash_flow_per_share: f64,
pub cash_per_share: f64,
pub payout_ratio: f64,
pub operating_cash_flow_sales_ratio: f64,
pub free_cash_flow_operating_cash_flow_ratio: f64,
pub cash_flow_coverage_ratios: f64,
pub short_term_coverage_ratios: f64,
pub capital_expenditure_coverage_ratio: f64,
pub dividend_paid_and_capex_coverage_ratio: f64,
pub dividend_payout_ratio: f64,
pub price_book_value_ratio: f64,
pub price_to_book_ratio: f64,
pub price_to_sales_ratio: f64,
pub price_earnings_ratio: f64,
pub price_to_free_cash_flows_ratio: f64,
pub price_to_operating_cash_flows_ratio: f64,
pub price_cash_flow_ratio: f64,
pub price_earnings_to_growth_ratio: f64,
pub price_sales_ratio: f64,
pub dividend_yield: f64,
pub enterprise_value_multiple: f64,
pub price_fair_value: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct KeyMetrics {
pub symbol: String,
pub date: String,
pub calendar_year: String,
pub period: String,
pub revenue_per_share: f64,
pub net_income_per_share: f64,
pub operating_cash_flow_per_share: f64,
pub free_cash_flow_per_share: f64,
pub cash_per_share: f64,
pub book_value_per_share: f64,
pub tangible_book_value_per_share: f64,
pub shareholders_equity_per_share: f64,
pub interest_debt_per_share: f64,
pub market_cap: i64,
pub enterprise_value: i64,
pub pe_ratio: f64,
pub price_to_sales_ratio: f64,
pub pocf_ratio: f64,
pub pfcf_ratio: f64,
pub pb_ratio: f64,
pub ptb_ratio: f64,
pub ev_to_sales: f64,
pub enterprise_value_over_ebitda: f64,
pub ev_to_operating_cash_flow: f64,
pub ev_to_free_cash_flow: f64,
pub earnings_yield: f64,
pub free_cash_flow_yield: f64,
pub debt_to_equity: f64,
pub debt_to_assets: f64,
pub net_debt_to_ebitda: f64,
pub current_ratio: f64,
pub interest_coverage: f64,
pub income_quality: f64,
pub dividend_yield: f64,
pub payout_ratio: f64,
pub sales_general_and_administrative_to_revenue: f64,
pub research_and_ddevelopement_to_revenue: f64,
pub intangibles_to_total_assets: f64,
pub capex_to_operating_cash_flow: f64,
pub capex_to_revenue: f64,
pub capex_to_depreciation: f64,
pub stock_based_compensation_to_revenue: f64,
pub graham_number: f64,
pub roic: f64,
pub return_on_tangible_assets: f64,
pub graham_net_net: f64,
pub working_capital: i64,
pub tangible_asset_value: i64,
pub net_current_asset_value: i64,
pub invested_capital: i64,
pub average_receivables: i64,
pub average_payables: i64,
pub average_inventory: i64,
pub days_sales_outstanding: f64,
pub days_payables_outstanding: f64,
pub days_of_inventory_on_hand: f64,
pub receivables_turnover: f64,
pub payables_turnover: f64,
pub inventory_turnover: f64,
pub roe: f64,
pub capex_per_share: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct FinancialGrowth {
pub date: String,
pub symbol: String,
pub period: String,
pub calendar_year: String,
pub revenue_growth: f64,
pub gross_profit_growth: f64,
pub ebit_growth: f64,
pub operating_income_growth: f64,
pub net_income_growth: f64,
pub eps_growth: f64,
pub eps_diluted_growth: f64,
pub weighted_average_shares_growth: f64,
pub weighted_average_shares_diluted_growth: f64,
pub dividends_per_share_growth: f64,
pub operating_cash_flow_growth: f64,
pub free_cash_flow_growth: f64,
pub ten_y_revenue_growth_per_share: f64,
pub five_y_revenue_growth_per_share: f64,
pub three_y_revenue_growth_per_share: f64,
pub ten_y_operating_cf_growth_per_share: f64,
pub five_y_operating_cf_growth_per_share: f64,
pub three_y_operating_cf_growth_per_share: f64,
pub ten_y_net_income_growth_per_share: f64,
pub five_y_net_income_growth_per_share: f64,
pub three_y_net_income_growth_per_share: f64,
pub ten_y_shareholders_equity_growth_per_share: f64,
pub five_y_shareholders_equity_growth_per_share: f64,
pub three_y_shareholders_equity_growth_per_share: f64,
pub ten_y_dividend_per_share_growth_per_share: f64,
pub five_y_dividend_per_share_growth_per_share: f64,
pub three_y_dividend_per_share_growth_per_share: f64,
pub receivables_growth: f64,
pub inventory_growth: f64,
pub asset_growth: f64,
pub book_value_per_share_growth: f64,
pub debt_growth: f64,
pub rd_expense_growth: f64,
pub sg_a_expenses_growth: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct FinancialAsReported {
pub date: String,
pub symbol: String,
pub period: String,
pub cik: String,
pub filling_date: String,
pub accepted_date: String,
pub calendar_year: String,
#[serde(flatten)]
pub data: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct RevenueProductSegmentation {
pub date: String,
pub symbol: String,
#[serde(flatten)]
pub segments: serde_json::Map<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct RevenueGeographicSegmentation {
pub date: String,
pub symbol: String,
#[serde(flatten)]
pub segments: serde_json::Map<String, serde_json::Value>,
}