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

from typing import Any, Callable, Final, TypeVar

_LOGGER: Final = ...
TFunc = TypeVar("TFunc", bound=Callable[..., Any])
TObj = TypeVar("TObj", bound=object)
def show_deprecation_warning(message: str) -> None:
    """Show a deprecation warning message."""
    ...

def make_deprecated_name_warning(old_name: str, new_name: str, removal_date: str, extra_message: str | None = ..., include_st_prefix: bool = ...) -> str:
    ...

def deprecate_func_name(func: TFunc, old_name: str, removal_date: str, extra_message: str | None = ..., name_override: str | None = ...) -> TFunc:
    """Wrap an `st` function whose name has changed.

    Wrapped functions will run as normal, but will also show an st.warning
    saying that the old name will be removed after removal_date.

    (We generally set `removal_date` to 3 months from the deprecation date.)

    Parameters
    ----------
    func
        The `st.` function whose name has changed.

    old_name
        The function's deprecated name within __init__.py.

    removal_date
        A date like "2020-01-01", indicating the last day we'll guarantee
        support for the deprecated name.

    extra_message
        An optional extra message to show in the deprecation warning.

    name_override
        An optional name to use in place of func.__name__.
    """
    ...

def deprecate_obj_name(obj: TObj, old_name: str, new_name: str, removal_date: str, include_st_prefix: bool = ...) -> TObj:
    """Wrap an `st` object whose name has changed.

    Wrapped objects will behave as normal, but will also show an st.warning
    saying that the old name will be removed after `removal_date`.

    (We generally set `removal_date` to 3 months from the deprecation date.)

    Parameters
    ----------
    obj
        The `st.` object whose name has changed.

    old_name
        The object's deprecated name within __init__.py.

    new_name
        The object's new name within __init__.py.

    removal_date
        A date like "2020-01-01", indicating the last day we'll guarantee
        support for the deprecated name.

    include_st_prefix
        If False, does not prefix each of the object names in the deprecation
        message with `st.*`. Defaults to True.
    """
    ...

