use serde::{Deserialize, Serialize};
use crate::{
codecs::NumericString,
types::{Cik, CountryCode, CurrencyCode, Date, ExchangeCode, Industry, Sector, Ticker},
};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct CompanySymbol {
pub symbol: Ticker,
pub company_name: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct FinancialStatementSymbol {
pub symbol: Ticker,
pub company_name: String,
pub trading_currency: CurrencyCode,
pub reporting_currency: CurrencyCode,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct CikListing {
pub cik: Cik,
pub company_name: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct SymbolChange {
pub date: Date,
pub company_name: String,
pub old_symbol: Ticker,
pub new_symbol: Ticker,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct EtfSymbol {
pub symbol: Ticker,
pub name: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct ActivelyTradingSymbol {
pub symbol: Ticker,
pub name: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct EarningsTranscriptAvailability {
pub symbol: Ticker,
pub company_name: String,
pub no_of_transcripts: NumericString,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct AvailableExchange {
pub exchange: ExchangeCode,
pub name: String,
pub country_name: String,
pub country_code: CountryCode,
pub symbol_suffix: String,
pub delay: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct AvailableSector {
pub sector: Sector,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct AvailableIndustry {
pub industry: Industry,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub struct AvailableCountry {
pub country: CountryCode,
}