from pandas import option_context as option_context
from pandas.core.dtypes.generic import ABCMultiIndex as ABCMultiIndex
from pandas.io.common import is_url as is_url
from pandas.io.formats.format import DataFrameFormatter as DataFrameFormatter, TableFormatter as TableFormatter, buffer_put_lines as buffer_put_lines, get_level_lengths as get_level_lengths
from pandas.io.formats.printing import pprint_thing as pprint_thing
from typing import Any, Dict, IO, Iterable, List, Optional, Tuple, Union

class HTMLFormatter(TableFormatter):
    indent_delta: int = ...
    fmt: Any = ...
    classes: Any = ...
    frame: Any = ...
    columns: Any = ...
    elements: Any = ...
    bold_rows: Any = ...
    escape: Any = ...
    show_dimensions: Any = ...
    border: Any = ...
    table_id: Any = ...
    render_links: Any = ...
    def __init__(self, formatter: DataFrameFormatter, classes: Optional[Union[str, List[str], Tuple[str, ...]]]=..., border: Optional[int]=...) -> None: ...
    @property
    def show_row_idx_names(self) -> bool: ...
    @property
    def show_col_idx_names(self) -> bool: ...
    @property
    def row_levels(self) -> int: ...
    @property
    def is_truncated(self) -> bool: ... # type: ignore
    @property
    def ncols(self) -> int: ...
    def write(self, s: Any, indent: int=...) -> None: ...
    def write_th(self, s: Any, header: bool=..., indent: int=..., tags: Optional[str]=...) -> None: ...
    def write_td(self, s: Any, indent: int=..., tags: Optional[str]=...) -> None: ...
    def write_tr(self, line: Iterable[Any], indent: int=..., indent_delta: int=..., header: bool=..., align: Optional[str]=..., tags: Optional[Dict[int, str]]=..., nindex_levels: int=...) -> None: ...
    def render(self) -> List[str]: ...
    def write_result(self, buf: IO[str]) -> None: ...

class NotebookFormatter(HTMLFormatter):
    def write_style(self) -> None: ...
    def render(self) -> List[str]: ...
