"""
Type annotations for botocore.docs.bcdoc.style module.

Copyright 2024 Vlad Emelianov
"""

from logging import Logger
from typing import Any

from botocore.docs.bcdoc.restdoc import ReSTDocument

logger: Logger = ...
PUNCTUATION_CHARACTERS: tuple[str, ...] = ...

class BaseStyle:
    def __init__(self, doc: ReSTDocument, indent_width: int = ...) -> None: ...
    @property
    def indentation(self) -> int: ...
    @indentation.setter
    def indentation(self, value: int) -> None: ...
    def new_paragraph(self) -> str: ...
    def indent(self) -> None: ...
    def dedent(self) -> None: ...
    def spaces(self) -> str: ...
    def bold(self, s: str) -> str: ...
    def ref(self, link: str | None, title: str | None = ...) -> str: ...
    def h2(self, s: str) -> str: ...
    def h3(self, s: str) -> str: ...
    def underline(self, s: str) -> str: ...
    def italics(self, s: str) -> str: ...
    def add_trailing_space_to_previous_write(self) -> None: ...

class ReSTStyle(BaseStyle):
    def __init__(self, doc: ReSTDocument, indent_width: int = ...) -> None: ...
    def new_paragraph(self) -> None: ...  # type: ignore[override]
    def new_line(self) -> None: ...
    def start_bold(self, attrs: Any = ...) -> None: ...
    def end_bold(self) -> None: ...
    def start_b(self, attrs: Any = ...) -> None: ...
    def end_b(self) -> None: ...
    def bold(self, s: str) -> None: ...  # type: ignore[override]
    def ref(self, title: str, link: str | None = ...) -> None: ...  # type: ignore[override]
    def h1(self, s: str) -> None: ...
    def h2(self, s: str) -> None: ...  # type: ignore[override]
    def h3(self, s: str) -> None: ...  # type: ignore[override]
    def start_italics(self, attrs: Any = ...) -> None: ...
    def end_italics(self) -> None: ...
    def italics(self, s: str) -> None: ...  # type: ignore[override]
    def start_p(self, attrs: Any = ...) -> None: ...
    def end_p(self) -> None: ...
    def start_code(self, attrs: Any = ...) -> None: ...
    def end_code(self) -> None: ...
    def code(self, s: str) -> None: ...
    def start_note(self, attrs: Any = ...) -> None: ...
    def end_note(self) -> None: ...
    def start_important(self, attrs: Any = ...) -> None: ...
    def end_important(self) -> None: ...
    def start_danger(self, attrs: Any = ...) -> None: ...
    def end_danger(self) -> None: ...
    def start_a(self, attrs: Any = ...) -> None: ...
    def link_target_definition(self, refname: str, link: str) -> None: ...
    def sphinx_reference_label(self, label: str, text: str | None = ...) -> None: ...
    def end_a(self, next_child: Any = ...) -> None: ...
    def start_i(self, attrs: Any = ...) -> None: ...
    def end_i(self) -> None: ...
    def start_li(self, attrs: Any = ...) -> None: ...
    def end_li(self) -> None: ...
    def li(self, s: str) -> None: ...
    def start_ul(self, attrs: Any = ...) -> None: ...
    def end_ul(self) -> None: ...
    def start_ol(self, attrs: Any = ...) -> None: ...
    def end_ol(self) -> None: ...
    def start_examples(self, attrs: Any = ...) -> None: ...
    def end_examples(self) -> None: ...
    def start_fullname(self, attrs: Any = ...) -> None: ...
    def end_fullname(self) -> None: ...
    def start_codeblock(self, attrs: Any = ...) -> None: ...
    def end_codeblock(self) -> None: ...
    def codeblock(self, code: str) -> None: ...
    def toctree(self) -> None: ...
    def tocitem(self, item: str, file_name: str | None = ...) -> None: ...
    def hidden_toctree(self) -> None: ...
    def hidden_tocitem(self, item: str) -> None: ...
    def table_of_contents(self, title: str | None = ..., depth: int | None = ...) -> None: ...
    def start_sphinx_py_class(self, class_name: str) -> None: ...
    def end_sphinx_py_class(self) -> None: ...
    def start_sphinx_py_method(self, method_name: str, parameters: Any = ...) -> None: ...
    def end_sphinx_py_method(self) -> None: ...
    def start_sphinx_py_attr(self, attr_name: str) -> None: ...
    def end_sphinx_py_attr(self) -> None: ...
    def write_py_doc_string(self, docstring: str) -> None: ...
    def external_link(self, title: str, link: str) -> None: ...
    def internal_link(self, title: str, page: str) -> None: ...
