Skip to main content

finance_query/models/corporate/
earnings.rs

1//! Earnings Module
2//!
3//! Contains quarterly and annual earnings chart data.
4
5use serde::{Deserialize, Serialize};
6
7/// Earnings data including charts and forecasts
8#[derive(Default, Debug, Clone, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10#[non_exhaustive]
11pub struct Earnings {
12    /// Default methodology (e.g., "gaap")
13    #[serde(default)]
14    pub default_methodology: Option<String>,
15
16    /// Earnings chart data
17    #[serde(default)]
18    pub earnings_chart: Option<EarningsChart>,
19
20    /// Financial chart data (revenue/earnings over time)
21    #[serde(default)]
22    pub financials_chart: Option<FinancialsChart>,
23}
24
25/// Earnings chart showing quarterly data
26#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(rename_all = "camelCase")]
28pub struct EarningsChart {
29    /// Quarterly earnings data
30    #[serde(default)]
31    pub quarterly: Vec<QuarterlyEarnings>,
32
33    /// Current quarter estimate
34    #[serde(default)]
35    pub current_quarter_estimate: Option<crate::models::quote::FormattedValue<f64>>,
36
37    /// Current quarter estimate date
38    #[serde(default)]
39    pub current_quarter_estimate_date: Option<String>,
40
41    /// Current quarter estimate year
42    #[serde(default)]
43    pub current_quarter_estimate_year: Option<i32>,
44
45    /// Current fiscal quarter
46    #[serde(default)]
47    pub current_fiscal_quarter: Option<String>,
48
49    /// Current calendar quarter
50    #[serde(default)]
51    pub current_calendar_quarter: Option<String>,
52
53    /// Upcoming earnings dates
54    #[serde(default)]
55    pub earnings_date: Vec<crate::models::quote::FormattedValue<i64>>,
56
57    /// Whether the earnings date is an estimate
58    #[serde(default)]
59    pub is_earnings_date_estimate: Option<bool>,
60}
61
62/// Quarterly earnings entry
63#[derive(Debug, Clone, Serialize, Deserialize)]
64#[serde(rename_all = "camelCase")]
65pub struct QuarterlyEarnings {
66    /// Date/quarter identifier
67    #[serde(default)]
68    pub date: Option<String>,
69
70    /// Actual EPS
71    #[serde(default)]
72    pub actual: Option<crate::models::quote::FormattedValue<f64>>,
73
74    /// Estimated EPS
75    #[serde(default)]
76    pub estimate: Option<crate::models::quote::FormattedValue<f64>>,
77
78    /// Difference between actual and estimate (string format)
79    #[serde(default)]
80    pub difference: Option<String>,
81
82    /// Surprise percentage (string format)
83    #[serde(default)]
84    pub surprise_pct: Option<String>,
85
86    /// Calendar quarter
87    #[serde(default)]
88    pub calendar_quarter: Option<String>,
89
90    /// Fiscal quarter
91    #[serde(default)]
92    pub fiscal_quarter: Option<String>,
93}
94
95/// Financial chart showing revenue and earnings over time
96#[derive(Debug, Clone, Serialize, Deserialize)]
97#[serde(rename_all = "camelCase")]
98pub struct FinancialsChart {
99    /// Yearly financial data
100    #[serde(default)]
101    pub yearly: Vec<YearlyFinancials>,
102
103    /// Quarterly financial data
104    #[serde(default)]
105    pub quarterly: Vec<QuarterlyFinancials>,
106}
107
108/// Yearly financial data entry
109#[derive(Debug, Clone, Serialize, Deserialize)]
110#[serde(rename_all = "camelCase")]
111pub struct YearlyFinancials {
112    /// Date
113    #[serde(default)]
114    pub date: Option<i64>,
115
116    /// Revenue
117    #[serde(default)]
118    pub revenue: Option<crate::models::quote::FormattedValue<i64>>,
119
120    /// Earnings
121    #[serde(default)]
122    pub earnings: Option<crate::models::quote::FormattedValue<i64>>,
123}
124
125/// Quarterly financial data entry
126#[derive(Debug, Clone, Serialize, Deserialize)]
127#[serde(rename_all = "camelCase")]
128pub struct QuarterlyFinancials {
129    /// Date
130    #[serde(default)]
131    pub date: Option<String>,
132
133    /// Revenue
134    #[serde(default)]
135    pub revenue: Option<crate::models::quote::FormattedValue<i64>>,
136
137    /// Earnings
138    #[serde(default)]
139    pub earnings: Option<crate::models::quote::FormattedValue<i64>>,
140}