"""
This type stub file was generated by pyright.
"""

from collections.abc import Iterable
from typing import Any, Callable, Final, Literal, NoReturn, TYPE_CHECKING, TypeVar
from typing_extensions import TypeAlias
from streamlit.elements.alert import AlertMixin
from streamlit.elements.arrow import ArrowMixin
from streamlit.elements.balloons import BalloonsMixin
from streamlit.elements.bokeh_chart import BokehMixin
from streamlit.elements.code import CodeMixin
from streamlit.elements.deck_gl_json_chart import PydeckMixin
from streamlit.elements.doc_string import HelpMixin
from streamlit.elements.empty import EmptyMixin
from streamlit.elements.exception import ExceptionMixin
from streamlit.elements.form import FormMixin
from streamlit.elements.graphviz_chart import GraphvizMixin
from streamlit.elements.heading import HeadingMixin
from streamlit.elements.html import HtmlMixin
from streamlit.elements.iframe import IframeMixin
from streamlit.elements.image import ImageMixin
from streamlit.elements.json import JsonMixin
from streamlit.elements.layouts import LayoutsMixin
from streamlit.elements.map import MapMixin
from streamlit.elements.markdown import MarkdownMixin
from streamlit.elements.media import MediaMixin
from streamlit.elements.metric import MetricMixin
from streamlit.elements.plotly_chart import PlotlyMixin
from streamlit.elements.progress import ProgressMixin
from streamlit.elements.pyplot import PyplotMixin
from streamlit.elements.snow import SnowMixin
from streamlit.elements.text import TextMixin
from streamlit.elements.toast import ToastMixin
from streamlit.elements.vega_charts import VegaChartsMixin
from streamlit.elements.widgets.audio_input import AudioInputMixin
from streamlit.elements.widgets.button import ButtonMixin
from streamlit.elements.widgets.button_group import ButtonGroupMixin
from streamlit.elements.widgets.camera_input import CameraInputMixin
from streamlit.elements.widgets.chat import ChatMixin
from streamlit.elements.widgets.checkbox import CheckboxMixin
from streamlit.elements.widgets.color_picker import ColorPickerMixin
from streamlit.elements.widgets.data_editor import DataEditorMixin
from streamlit.elements.widgets.file_uploader import FileUploaderMixin
from streamlit.elements.widgets.multiselect import MultiSelectMixin
from streamlit.elements.widgets.number_input import NumberInputMixin
from streamlit.elements.widgets.radio import RadioMixin
from streamlit.elements.widgets.select_slider import SelectSliderMixin
from streamlit.elements.widgets.selectbox import SelectboxMixin
from streamlit.elements.widgets.slider import SliderMixin
from streamlit.elements.widgets.text_widgets import TextWidgetsMixin
from streamlit.elements.widgets.time_widgets import TimeWidgetsMixin
from streamlit.elements.write import WriteMixin
from streamlit.cursor import Cursor

"""Allows us to create and absorb changes (aka Deltas) to elements."""
if TYPE_CHECKING:
    ...
MAX_DELTA_BYTES: Final[int] = ...
Value = TypeVar("Value")
BlockType: TypeAlias = str
AncestorBlockTypes: TypeAlias = Iterable[BlockType]
_use_warning_has_been_displayed: bool = ...
class DeltaGenerator(AlertMixin, AudioInputMixin, BalloonsMixin, BokehMixin, ButtonMixin, ButtonGroupMixin, CameraInputMixin, ChatMixin, CheckboxMixin, CodeMixin, ColorPickerMixin, EmptyMixin, ExceptionMixin, FileUploaderMixin, FormMixin, GraphvizMixin, HeadingMixin, HelpMixin, HtmlMixin, IframeMixin, ImageMixin, LayoutsMixin, MarkdownMixin, MapMixin, MediaMixin, MetricMixin, MultiSelectMixin, NumberInputMixin, PlotlyMixin, ProgressMixin, PydeckMixin, PyplotMixin, RadioMixin, SelectboxMixin, SelectSliderMixin, SliderMixin, SnowMixin, JsonMixin, TextMixin, TextWidgetsMixin, TimeWidgetsMixin, ToastMixin, WriteMixin, ArrowMixin, VegaChartsMixin, DataEditorMixin):
    """Creator of Delta protobuf messages.

    Parameters
    ----------
    root_container: BlockPath_pb2.BlockPath.ContainerValue or None
      The root container for this DeltaGenerator. If None, this is a null
      DeltaGenerator which doesn't print to the app at all (useful for
      testing).

    cursor: cursor.Cursor or None
      This is either:
      - None: if this is the running DeltaGenerator for a top-level
        container (MAIN or SIDEBAR)
      - RunningCursor: if this is the running DeltaGenerator for a
        non-top-level container (created with dg.container())
      - LockedCursor: if this is a locked DeltaGenerator returned by some
        other DeltaGenerator method. E.g. the dg returned in dg =
        st.text("foo").

    parent: DeltaGenerator
      To support the `with dg` notation, DGs are arranged as a tree. Each DG
      remembers its own parent, and the root of the tree is the main DG.

    block_type: None or "vertical" or "horizontal" or "column" or "expandable"
      If this is a block DG, we track its type to prevent nested columns/expanders

    """
    def __init__(self, root_container: int | None = ..., cursor: Cursor | None = ..., parent: DeltaGenerator | None = ..., block_type: str | None = ...) -> None:
        """Inserts or updates elements in Streamlit apps.

        As a user, you should never initialize this object by hand. Instead,
        DeltaGenerator objects are initialized for you in two places:

        1) When you call `dg = st.foo()` for some method "foo", sometimes `dg`
        is a DeltaGenerator object. You can call methods on the `dg` object to
        update the element `foo` that appears in the Streamlit app.

        2) This is an internal detail, but `st.sidebar` itself is a
        DeltaGenerator. That's why you can call `st.sidebar.foo()` to place
        an element `foo` inside the sidebar.

        """
        ...
    
    def __repr__(self) -> str:
        ...
    
    def __enter__(self) -> None:
        ...
    
    def __exit__(self, type: Any, value: Any, traceback: Any) -> Literal[False]:
        ...
    
    def __getattr__(self, name: str) -> Callable[..., NoReturn]:
        ...
    
    def __deepcopy__(self, _memo): # -> DeltaGenerator:
        ...
    
    @property
    def id(self) -> str:
        ...
    


