from flask_babel._compat import string_types as string_types
from flask_babel.speaklater import LazyString as LazyString
from typing import Any, Optional

class Babel:
    default_date_formats: Any = ...
    app: Any = ...
    locale_selector_func: Any = ...
    timezone_selector_func: Any = ...
    def __init__(self, app: Optional[Any] = ..., default_locale: str = ..., default_timezone: str = ..., default_domain: str = ..., date_formats: Optional[Any] = ..., configure_jinja: bool = ...) -> None: ...
    date_formats: Any = ...
    def init_app(self, app: Any): ...
    def localeselector(self, f: Any): ...
    def timezoneselector(self, f: Any): ...
    def list_translations(self): ...
    @property
    def default_locale(self): ...
    @property
    def default_timezone(self): ...
    @property
    def domain(self): ...
    @property
    def translation_directories(self) -> None: ...

def _(string: Any, **variables: Any): ...
def get_translations(): ...
def get_locale(): ...
def get_timezone(): ...
def refresh() -> None: ...
def force_locale(locale: Any) -> None: ...
def to_user_timezone(datetime: Any): ...
def to_utc(datetime: Any): ...
def format_datetime(datetime: Optional[Any] = ..., format: Optional[Any] = ..., rebase: bool = ...): ...
def format_date(date: Optional[Any] = ..., format: Optional[Any] = ..., rebase: bool = ...): ...
def format_time(time: Optional[Any] = ..., format: Optional[Any] = ..., rebase: bool = ...): ...
def format_timedelta(datetime_or_timedelta: Any, granularity: str = ..., add_direction: bool = ..., threshold: float = ...): ...
def format_number(number: Any): ...
def format_decimal(number: Any, format: Optional[Any] = ...): ...
def format_currency(number: Any, currency: Any, format: Optional[Any] = ..., currency_digits: bool = ..., format_type: str = ...): ...
def format_percent(number: Any, format: Optional[Any] = ...): ...
def format_scientific(number: Any, format: Optional[Any] = ...): ...
def gettext(string: Any, **variables: Any): ...
def ngettext(singular: Any, plural: Any, num: Any, **variables: Any): ...
def pgettext(context: Any, string: Any, **variables: Any): ...
def npgettext(context: Any, singular: Any, plural: Any, num: Any, **variables: Any): ...
def lazy_gettext(string: Any, **variables: Any) -> LazyString: ...
def lazy_ngettext(singular: Any, plural: Any, num: Any, **variables: Any): ...
def lazy_pgettext(context: Any, string: Any, **variables: Any): ...
