import enum
import typing

from _typeshed import Incomplete

from .utils._string_case import to_camel_case as to_camel_case
from .utils._string_case import to_lisp_case as to_lisp_case
from .utils._string_case import to_pascal_case as to_pascal_case
from .utils._string_case import to_snake_case as to_snake_case

class FuncWrapper:
    f: Incomplete
    def __init__(self, f: typing.Callable) -> None: ...
    def __call__(self, *args, **kwargs): ...

class KeyAction(enum.Enum):
    IGNORE = ...
    RAISE = ...
    WARN = ...
    @staticmethod
    def _generate_next_value_(name, start, count, last_values): ...
    @classmethod
    def __init__(cls, value) -> None: ...

class EnvKeyStrategy(enum.Enum):
    ENV = ...
    FIELD_FIRST = ...
    STRICT = ...
    @staticmethod
    def _generate_next_value_(name, start, count, last_values): ...
    @classmethod
    def __init__(cls, value) -> None: ...

class KeyCase(enum.Enum):
    CAMEL = ...
    C = ...
    PASCAL = ...
    P = ...
    KEBAB = ...
    K = ...
    SNAKE = ...
    S = ...
    AUTO = ...
    A = ...
    @staticmethod
    def _generate_next_value_(name, start, count, last_values): ...
    def __call__(self, *args): ...
    @classmethod
    def __init__(cls, value) -> None: ...

class DateTimeTo(enum.Enum):
    ISO = ...
    TIMESTAMP = ...
    @staticmethod
    def _generate_next_value_(name, start, count, last_values): ...
    @classmethod
    def __init__(cls, value) -> None: ...

class EnvPrecedence(enum.Enum):
    SECRETS_ENV_DOTENV = ...
    SECRETS_DOTENV_ENV = ...
    ENV_ONLY = ...
    @staticmethod
    def _generate_next_value_(name, start, count, last_values): ...
    @classmethod
    def __init__(cls, value) -> None: ...
