import pandas as pd
from _typeshed import Incomplete

from . import cache as cache
from . import utils as utils
from .data import YfData as YfData
from .exceptions import YFEarningsDateMissing as YFEarningsDateMissing
from .exceptions import YFRateLimitError as YFRateLimitError
from .live import WebSocket as WebSocket
from .scrapers.analysis import Analysis as Analysis
from .scrapers.fundamentals import Fundamentals as Fundamentals
from .scrapers.funds import FundsData as FundsData
from .scrapers.history import PriceHistory as PriceHistory
from .scrapers.holders import Holders as Holders
from .scrapers.quote import FastInfo as FastInfo
from .scrapers.quote import Quote as Quote

class TickerBase:
    ticker: Incomplete
    session: Incomplete
    ws: Incomplete
    def __init__(self, ticker, session: Incomplete | None = None, proxy=...) -> None: ...
    @utils.log_indent_decorator
    def history(self, *args, **kwargs) -> pd.DataFrame: ...
    def get_recommendations(self, proxy=..., as_dict: bool = False): ...
    def get_recommendations_summary(self, proxy=..., as_dict: bool = False): ...
    def get_upgrades_downgrades(self, proxy=..., as_dict: bool = False): ...
    def get_calendar(self, proxy=...) -> dict: ...
    def get_sec_filings(self, proxy=...) -> dict: ...
    def get_major_holders(self, proxy=..., as_dict: bool = False): ...
    def get_institutional_holders(self, proxy=..., as_dict: bool = False): ...
    def get_mutualfund_holders(self, proxy=..., as_dict: bool = False): ...
    def get_insider_purchases(self, proxy=..., as_dict: bool = False): ...
    def get_insider_transactions(self, proxy=..., as_dict: bool = False): ...
    def get_insider_roster_holders(self, proxy=..., as_dict: bool = False): ...
    def get_info(self, proxy=...) -> dict: ...
    def get_fast_info(self, proxy=...): ...
    def get_sustainability(self, proxy=..., as_dict: bool = False): ...
    def get_analyst_price_targets(self, proxy=...) -> dict: ...
    def get_earnings_estimate(self, proxy=..., as_dict: bool = False): ...
    def get_revenue_estimate(self, proxy=..., as_dict: bool = False): ...
    def get_earnings_history(self, proxy=..., as_dict: bool = False): ...
    def get_eps_trend(self, proxy=..., as_dict: bool = False): ...
    def get_eps_revisions(self, proxy=..., as_dict: bool = False): ...
    def get_growth_estimates(self, proxy=..., as_dict: bool = False): ...
    def get_earnings(self, proxy=..., as_dict: bool = False, freq: str = "yearly"): ...
    def get_income_stmt(self, proxy=..., as_dict: bool = False, pretty: bool = False, freq: str = "yearly"): ...
    def get_incomestmt(self, proxy=..., as_dict: bool = False, pretty: bool = False, freq: str = "yearly"): ...
    def get_financials(self, proxy=..., as_dict: bool = False, pretty: bool = False, freq: str = "yearly"): ...
    def get_balance_sheet(self, proxy=..., as_dict: bool = False, pretty: bool = False, freq: str = "yearly"): ...
    def get_balancesheet(self, proxy=..., as_dict: bool = False, pretty: bool = False, freq: str = "yearly"): ...
    def get_cash_flow(
        self, proxy=..., as_dict: bool = False, pretty: bool = False, freq: str = "yearly"
    ) -> pd.DataFrame | dict: ...
    def get_cashflow(self, proxy=..., as_dict: bool = False, pretty: bool = False, freq: str = "yearly"): ...
    def get_dividends(self, proxy=..., period: str = "max") -> pd.Series: ...
    def get_capital_gains(self, proxy=..., period: str = "max") -> pd.Series: ...
    def get_splits(self, proxy=..., period: str = "max") -> pd.Series: ...
    def get_actions(self, proxy=..., period: str = "max") -> pd.Series: ...
    def get_shares(self, proxy=..., as_dict: bool = False) -> pd.DataFrame | dict: ...
    @utils.log_indent_decorator
    def get_shares_full(self, start: Incomplete | None = None, end: Incomplete | None = None, proxy=...): ...
    def get_isin(self, proxy=...) -> str | None: ...
    def get_news(self, count: int = 10, tab: str = "news", proxy=...) -> list: ...
    @utils.log_indent_decorator
    def get_earnings_dates(self, limit: int = 12, proxy=...) -> pd.DataFrame | None: ...
    def get_history_metadata(self, proxy=...) -> dict: ...
    def get_funds_data(self, proxy=...) -> FundsData | None: ...
    def live(self, message_handler: Incomplete | None = None, verbose: bool = True) -> None: ...
