paft_fundamentals/
statements.rs1use serde::{Deserialize, Serialize};
4
5use chrono::{DateTime, Utc};
6#[cfg(feature = "dataframe")]
7use df_derive::ToDataFrame;
8#[cfg(feature = "dataframe")]
9use paft_core::dataframe::ToDataFrame;
10use paft_core::domain::{Money, Period};
11
12#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
13#[cfg_attr(feature = "dataframe", derive(ToDataFrame))]
14pub struct IncomeStatementRow {
16 #[cfg_attr(feature = "dataframe", df_derive(as_string))]
18 pub period: Period,
19 pub total_revenue: Option<Money>,
21 pub gross_profit: Option<Money>,
23 pub operating_income: Option<Money>,
25 pub net_income: Option<Money>,
27}
28
29#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
30#[cfg_attr(feature = "dataframe", derive(ToDataFrame))]
31pub struct BalanceSheetRow {
33 #[cfg_attr(feature = "dataframe", df_derive(as_string))]
35 pub period: Period,
36 pub total_assets: Option<Money>,
38 pub total_liabilities: Option<Money>,
40 pub total_equity: Option<Money>,
42 pub cash: Option<Money>,
44 pub long_term_debt: Option<Money>,
46 pub shares_outstanding: Option<u64>,
48}
49
50#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
51#[cfg_attr(feature = "dataframe", derive(ToDataFrame))]
52pub struct CashflowRow {
54 #[cfg_attr(feature = "dataframe", df_derive(as_string))]
56 pub period: Period,
57 pub operating_cashflow: Option<Money>,
59 pub capital_expenditures: Option<Money>,
61 pub free_cash_flow: Option<Money>,
63 pub net_income: Option<Money>,
65}
66
67#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
68#[cfg_attr(feature = "dataframe", derive(ToDataFrame))]
69pub struct Calendar {
71 #[serde(with = "paft_core::serde_helpers::ts_seconds_vec")]
73 pub earnings_dates: Vec<DateTime<Utc>>,
74 #[serde(with = "paft_core::serde_helpers::ts_seconds_option")]
76 pub ex_dividend_date: Option<DateTime<Utc>>,
77 #[serde(with = "paft_core::serde_helpers::ts_seconds_option")]
79 pub dividend_payment_date: Option<DateTime<Utc>>,
80}