export type SearchResult = { symbol: string; name: string; exchange?: string | null; }; export type Quote = { price?: number | null; prev_close?: number | null; change?: number | null; change_pct?: number | null; }; export type MarketIndex = { name: string; price?: number | null; change_pct?: number | null; }; export type Signal = { key: string; state: "pos" | "warn" | "neg" | "neu"; value: string; description: string; }; export type TickerOverview = { profile: { symbol: string; name: string; sector?: string | null; industry?: string | null; exchange?: string | null; website?: string | null; summary?: string | null; }; quote: Quote; signals: Signal[]; stats: { market_cap?: number | null; trailing_pe?: number | null; trailing_eps?: number | null; volume?: number | null; average_volume?: number | null; beta?: number | null; }; range_52w: { low?: number | null; high?: number | null; price?: number | null; }; short_interest: { short_percent_of_float?: number | null; short_ratio?: number | null; shares_short?: number | null; shares_short_prior_month?: number | null; shares_short_delta_pct?: number | null; }; meta: { status: "complete" | "partial"; is_partial: boolean; field_availability: Record; sources: Record; }; }; export type HistoryPoint = { date: string; open?: number | null; high?: number | null; low?: number | null; close?: number | null; volume?: number | null; }; export type WatchlistItem = { symbol: string; created_at: string; quote?: Quote | null; }; export type WatchlistResponse = { items: WatchlistItem[]; limit: number; };