tvdata-rs 0.1.2

Async Rust client for TradingView screener queries, search, calendars, quote snapshots, and OHLCV history.
Documentation
use crate::market_data::{
    ConversionRatesSnapshot, InstrumentIdentity, QuoteSnapshot, TechnicalSummary,
};
use time::OffsetDateTime;

#[derive(Debug, Clone, PartialEq)]
pub struct FundamentalsSnapshot {
    pub instrument: InstrumentIdentity,
    pub market_cap: Option<f64>,
    pub price_earnings_ttm: Option<f64>,
    pub price_to_book_fq: Option<f64>,
    pub price_to_sales_current: Option<f64>,
    pub total_revenue_ttm: Option<f64>,
    pub net_income_ttm: Option<f64>,
    pub eps_ttm: Option<f64>,
    pub dividend_yield_recent: Option<f64>,
    pub return_on_equity_ttm: Option<f64>,
    pub return_on_assets_ttm: Option<f64>,
    pub debt_to_equity_mrq: Option<f64>,
    pub current_ratio_mrq: Option<f64>,
    pub free_cash_flow_ttm: Option<f64>,
    pub ebitda_ttm: Option<f64>,
}

#[derive(Debug, Clone, PartialEq, Default)]
pub struct AnalystRecommendations {
    pub buy: Option<u32>,
    pub sell: Option<u32>,
    pub hold: Option<u32>,
    pub outperform: Option<u32>,
    pub underperform: Option<u32>,
    pub total: Option<u32>,
    pub rating: Option<f64>,
}

#[derive(Debug, Clone, PartialEq, Default)]
pub struct AnalystPriceTargets {
    pub average: Option<f64>,
    pub high: Option<f64>,
    pub low: Option<f64>,
    pub median: Option<f64>,
    pub one_year: Option<f64>,
    pub one_year_delta_percent: Option<f64>,
}

#[derive(Debug, Clone, PartialEq, Default)]
pub struct AnalystForecasts {
    pub revenue_current_quarter: Option<f64>,
    pub revenue_next_quarter: Option<f64>,
    pub revenue_next_half_year: Option<f64>,
    pub revenue_next_fiscal_year: Option<f64>,
    pub eps_current_quarter: Option<f64>,
    pub eps_next_quarter: Option<f64>,
    pub eps_next_half_year: Option<f64>,
    pub eps_next_fiscal_year: Option<f64>,
    pub eps_surprise_recent_quarter: Option<f64>,
    pub eps_surprise_percent_recent_quarter: Option<f64>,
    pub forward_non_gaap_price_earnings: Option<f64>,
    pub forward_price_earnings_fiscal_year: Option<f64>,
}

#[derive(Debug, Clone, PartialEq, Default)]
pub struct EarningsCalendar {
    pub recent_release_at: Option<OffsetDateTime>,
    pub next_release_at: Option<OffsetDateTime>,
    pub recent_calendar_date: Option<OffsetDateTime>,
    pub next_calendar_date: Option<OffsetDateTime>,
    pub current_quarter_trading_date: Option<OffsetDateTime>,
    pub next_quarter_trading_date: Option<OffsetDateTime>,
    pub fiscal_year_trading_date: Option<OffsetDateTime>,
    pub recent_release_time_code: Option<u32>,
    pub next_release_time_code: Option<u32>,
    pub current_quarter_publication_type_code: Option<u32>,
    pub next_quarter_publication_type_code: Option<u32>,
}

#[derive(Debug, Clone, PartialEq, Default)]
pub struct AnalystFxRates {
    pub current: Option<ConversionRatesSnapshot>,
    pub time_series: Option<ConversionRatesSnapshot>,
    pub revenue_current_quarter: Option<ConversionRatesSnapshot>,
    pub revenue_next_half_year: Option<ConversionRatesSnapshot>,
    pub revenue_next_fiscal_year: Option<ConversionRatesSnapshot>,
    pub trailing_twelve_months: Option<ConversionRatesSnapshot>,
    pub cash_flow: Option<ConversionRatesSnapshot>,
    pub price_target: Option<ConversionRatesSnapshot>,
    pub market_cap: Option<ConversionRatesSnapshot>,
    pub earnings_current_quarter: Option<ConversionRatesSnapshot>,
    pub earnings_next_quarter: Option<ConversionRatesSnapshot>,
    pub dividend_recent: Option<ConversionRatesSnapshot>,
    pub dividend_upcoming: Option<ConversionRatesSnapshot>,
}

#[derive(Debug, Clone, PartialEq)]
pub struct AnalystSummary {
    pub instrument: InstrumentIdentity,
    pub close: Option<f64>,
    pub recommendations: AnalystRecommendations,
    pub price_targets: AnalystPriceTargets,
    pub forecasts: AnalystForecasts,
    pub earnings: EarningsCalendar,
    pub fx_rates: AnalystFxRates,
}

#[derive(Debug, Clone, PartialEq)]
pub struct EquityOverview {
    pub quote: QuoteSnapshot,
    pub fundamentals: FundamentalsSnapshot,
    pub analyst: AnalystSummary,
    pub technicals: TechnicalSummary,
}