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

from enum import Enum
from typing import Callable, Dict, Optional, TypeVar, Union, Any

from dataclasses_json.undefined import Undefined
from marshmallow.fields import Field as MarshmallowField

T = TypeVar("T")


class Exclude:
    """
    Pre-defined constants for exclusion. By default, fields are configured to
    be included.
    """

    ALWAYS: Callable[[object], bool] = ...
    NEVER: Callable[[object], bool] = ...


class _GlobalConfig:
    def __init__(self) -> None: ...


global_config = ...


class LetterCase(Enum):
    CAMEL = ...
    KEBAB = ...
    SNAKE = ...
    PASCAL = ...


def config(
    metadata: Optional[dict[str, Any]] = ...,
    *,
    encoder: Optional[Callable[[T], Any]] = ...,
    decoder: Optional[Callable[[Any], T]] = ...,
    mm_field: Optional[MarshmallowField] = ...,
    letter_case: Union[Callable[[str], str], LetterCase, None] = ...,
    undefined: Optional[Union[str, Undefined]] = ...,
    field_name: Optional[str] = ...,
    exclude: Optional[Callable[[T], bool]] = ...,
) -> Dict[str, dict[str, Any]]: ...
