from typing import Any as _Any, Optional
from voluptuous.error import AllInvalid as AllInvalid, AnyInvalid as AnyInvalid, BooleanInvalid as BooleanInvalid, CoerceInvalid as CoerceInvalid, ContainsInvalid as ContainsInvalid, DateInvalid as DateInvalid, DatetimeInvalid as DatetimeInvalid, DirInvalid as DirInvalid, EmailInvalid as EmailInvalid, ExactSequenceInvalid as ExactSequenceInvalid, FalseInvalid as FalseInvalid, FileInvalid as FileInvalid, InInvalid as InInvalid, Invalid as Invalid, LengthInvalid as LengthInvalid, MatchInvalid as MatchInvalid, MultipleInvalid as MultipleInvalid, NotEnoughValid as NotEnoughValid, NotInInvalid as NotInInvalid, PathInvalid as PathInvalid, RangeInvalid as RangeInvalid, TooManyValid as TooManyValid, TrueInvalid as TrueInvalid, TypeInvalid as TypeInvalid, UrlInvalid as UrlInvalid
from voluptuous.schema_builder import Schema as Schema, message as message, raises as raises

basestring = str
USER_REGEX: _Any
DOMAIN_REGEX: _Any

def truth(f: _Any): ...

class Coerce:
    type: _Any = ...
    msg: _Any = ...
    type_name: _Any = ...
    def __init__(self, type: _Any, msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

def IsTrue(v: _Any): ...
def IsFalse(v: _Any): ...
def Boolean(v: _Any): ...

class _WithSubValidators:
    validators: _Any = ...
    msg: _Any = ...
    required: _Any = ...
    def __init__(self, *validators: _Any, **kwargs: _Any) -> None: ...
    def __voluptuous_compile__(self, schema: _Any): ...
    def __call__(self, v: _Any): ...

class Any(_WithSubValidators): ...
Or = Any

class All(_WithSubValidators): ...
And = All

class Match:
    pattern: _Any = ...
    msg: _Any = ...
    def __init__(self, pattern: _Any, msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class Replace:
    pattern: _Any = ...
    substitution: _Any = ...
    msg: _Any = ...
    def __init__(self, pattern: _Any, substitution: _Any, msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

def Email(v: _Any): ...
def FqdnUrl(v: _Any): ...
def Url(v: _Any): ...
def IsFile(v: _Any): ...
def IsDir(v: _Any): ...
def PathExists(v: _Any): ...
def Maybe(validator: _Any, msg: Optional[_Any] = ...): ...

class Range:
    min: _Any = ...
    max: _Any = ...
    min_included: _Any = ...
    max_included: _Any = ...
    msg: _Any = ...
    def __init__(self, min: Optional[_Any] = ..., max: Optional[_Any] = ..., min_included: bool = ..., max_included: bool = ..., msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class Clamp:
    min: _Any = ...
    max: _Any = ...
    msg: _Any = ...
    def __init__(self, min: Optional[_Any] = ..., max: Optional[_Any] = ..., msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class Length:
    min: _Any = ...
    max: _Any = ...
    msg: _Any = ...
    def __init__(self, min: Optional[_Any] = ..., max: Optional[_Any] = ..., msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class Datetime:
    DEFAULT_FORMAT: str = ...
    format: _Any = ...
    msg: _Any = ...
    def __init__(self, format: Optional[_Any] = ..., msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class Date(Datetime):
    DEFAULT_FORMAT: str = ...
    def __call__(self, v: _Any): ...

class In:
    container: _Any = ...
    msg: _Any = ...
    def __init__(self, container: _Any, msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class NotIn:
    container: _Any = ...
    msg: _Any = ...
    def __init__(self, container: _Any, msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class Contains:
    item: _Any = ...
    msg: _Any = ...
    def __init__(self, item: _Any, msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class ExactSequence:
    validators: _Any = ...
    msg: _Any = ...
    def __init__(self, validators: _Any, **kwargs: _Any) -> None: ...
    def __call__(self, v: _Any): ...

class Unique:
    msg: _Any = ...
    def __init__(self, msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class Equal:
    target: _Any = ...
    msg: _Any = ...
    def __init__(self, target: _Any, msg: Optional[_Any] = ...) -> None: ...
    def __call__(self, v: _Any): ...

class Unordered:
    validators: _Any = ...
    msg: _Any = ...
    def __init__(self, validators: _Any, msg: Optional[_Any] = ..., **kwargs: _Any) -> None: ...
    def __call__(self, v: _Any): ...

class Number:
    precision: _Any = ...
    scale: _Any = ...
    msg: _Any = ...
    yield_decimal: _Any = ...
    def __init__(self, precision: Optional[_Any] = ..., scale: Optional[_Any] = ..., msg: Optional[_Any] = ..., yield_decimal: bool = ...) -> None: ...
    def __call__(self, v: _Any): ...

class SomeOf(_WithSubValidators):
    min_valid: _Any = ...
    max_valid: _Any = ...
    def __init__(self, validators: _Any, min_valid: Optional[_Any] = ..., max_valid: Optional[_Any] = ..., **kwargs: _Any) -> None: ...
