use crate::entity::SerpApiSearchResult;
use serde::{Deserialize, Serialize};
use serde_json::Value;
pub type SerpApiGoogleFinanceExploreTaskAdvanced = SerpApiSearchResult<SerpApiGoogleFinanceItem>;
pub type SerpApiGoogleFinanceExploreTaskHtml = SerpApiSearchResult<crate::entity::SerpApiHtmlItem>;
pub type SerpApiGoogleFinanceMarketsTaskAdvanced = SerpApiSearchResult<SerpApiGoogleFinanceItem>;
pub type SerpApiGoogleFinanceMarketsTaskHtml = SerpApiSearchResult<crate::entity::SerpApiHtmlItem>;
pub type SerpApiGoogleFinanceQuoteTaskAdvanced = SerpApiSearchResult<SerpApiGoogleFinanceItem>;
pub type SerpApiGoogleFinanceTickerSearchTaskAdvanced =
SerpApiSearchResult<SerpApiGoogleFinanceTickerSearchItem>;
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum SerpApiGoogleFinanceItem {
#[serde(rename = "google_finance_hero_groups")]
HeroGroups(Box<SerpApiElementFinanceHeroGroups>),
#[serde(rename = "google_finance_futures_chain")]
FuturesChain(Box<SerpApiElementFinanceHeroGroups>),
#[serde(rename = "google_finance_news")]
News(Box<SerpApiElementFinanceNews>),
#[serde(rename = "google_finance_explore_market_trends")]
ExploreMarketTrends(Box<SerpApiElementFinanceNews>),
#[serde(rename = "google_finance_market_trends")]
MarketTrends(Box<SerpApiElementFinanceMarketTrends>),
#[serde(rename = "google_finance_interested")]
Interested(Box<SerpApiElementFinanceList>),
#[serde(rename = "google_finance_most_followed")]
MostFollowed(Box<SerpApiElementFinanceList>),
#[serde(rename = "google_finance_earnings_calendar")]
EarningsCalendar(Box<SerpApiElementFinanceList>),
#[serde(rename = "google_finance_people_also_search")]
PeopleAlsoSearch(Box<SerpApiElementFinanceList>),
#[serde(rename = "google_finance_compare_to")]
CompareTo(Box<SerpApiElementFinanceList>),
#[serde(rename = "google_finance_quote")]
Quote(Box<SerpApiElementFinanceQuote>),
#[serde(rename = "google_finance_financial")]
Financial(Box<SerpApiElementFinanceFinancial>),
#[serde(rename = "google_finance_details")]
Details(Box<SerpApiElementFinanceDetails>),
#[serde(rename = "google_finance_about")]
About(Box<SerpApiElementFinanceAbout>),
#[serde(untagged)]
Unknown(Value),
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceHeroGroups {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub markets: Option<Vec<Value>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceNews {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub title: Option<String>,
pub sub_title: Option<String>,
pub url: Option<String>,
pub items: Option<Vec<Value>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceMarketTrends {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub items: Option<Value>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceList {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub items: Option<Vec<Value>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceQuote {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub quote: Option<Value>,
pub graph_items: Option<Vec<Value>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceFinancial {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub quarterly_metrics: Option<Vec<Value>>,
pub annual_metrics: Option<Vec<Value>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceDetails {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub badges: Option<Vec<Value>>,
pub previous_close: Option<Value>,
pub start_day_range: Option<Value>,
pub end_day_range: Option<Value>,
pub market_cap: Option<Value>,
pub volume: Option<Value>,
pub pe_ratio: Option<Value>,
pub dividend_yield: Option<Value>,
pub primary_exchange: Option<String>,
pub metrics_currency: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceAbout {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub displayed_name: Option<String>,
pub description: Option<String>,
pub ceo: Option<String>,
pub founded: Option<String>,
pub headquarters: Option<String>,
pub website: Option<String>,
pub employees: Option<i64>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum SerpApiGoogleFinanceTickerSearchItem {
#[serde(rename = "google_finance_market_index")]
MarketIndex(Box<SerpApiElementFinanceMarketIndex>),
#[serde(rename = "google_finance_asset_pair")]
AssetPair(Box<SerpApiElementFinanceAssetPair>),
#[serde(rename = "google_finance_market_instrument")]
MarketInstrument(Box<SerpApiElementFinanceMarketInstrument>),
#[serde(untagged)]
Unknown(Value),
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceMarketIndex {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub ticker: Option<String>,
pub market_identifier: Option<String>,
pub index_value: Option<f64>,
pub index_value_delta: Option<f64>,
pub identifier: Option<String>,
pub displayed_name: Option<String>,
pub url: Option<String>,
pub location: Option<String>,
pub trend: Option<String>,
pub timestamp: Option<String>,
pub percentage_delta: Option<f64>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceAssetPair {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub base_symbol: Option<String>,
pub quote_symbol: Option<String>,
pub base_display_name: Option<String>,
pub quote_display_name: Option<String>,
pub price: Option<f64>,
pub price_delta: Option<f64>,
pub identifier: Option<String>,
pub displayed_name: Option<String>,
pub url: Option<String>,
pub location: Option<String>,
pub trend: Option<String>,
pub timestamp: Option<String>,
pub percentage_delta: Option<f64>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementFinanceMarketInstrument {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub ticker: Option<String>,
pub price: Option<f64>,
pub price_delta: Option<f64>,
pub price_currency: Option<String>,
pub identifier: Option<String>,
pub displayed_name: Option<String>,
pub url: Option<String>,
pub location: Option<String>,
pub trend: Option<String>,
pub timestamp: Option<String>,
pub percentage_delta: Option<f64>,
}