import abc
from _typeshed import Incomplete
from abc import abstractmethod

class RecordMeta(type):
    def __new__(metacls, name, parents, dct): ...

class Record(metaclass=RecordMeta):
    def __init__(self, default: Incomplete | None = None, required_default: bool = False, required: bool = False, *args, **kwargs) -> None: ...
    @classmethod
    def schema(cls): ...
    @classmethod
    def schema_info(cls, defined_names): ...
    def __setattr__(self, key, value) -> None: ...
    def __eq__(self, other): ...
    def __ne__(self, other): ...
    def type(self): ...
    def python_type(self): ...
    def validate_type(self, name, val): ...
    def default(self): ...
    def required_default(self): ...

class Field(metaclass=abc.ABCMeta):
    def __init__(self, default: Incomplete | None = None, required: bool = False, required_default: bool = False) -> None: ...
    @abstractmethod
    def type(self): ...
    @abstractmethod
    def python_type(self): ...
    def validate_type(self, name, val): ...
    def schema(self): ...
    def schema_info(self, defined_names): ...
    def default(self): ...
    def required_default(self): ...

class Null(Field):
    def type(self): ...
    def python_type(self): ...
    def validate_type(self, name, val): ...

class Boolean(Field):
    def type(self): ...
    def python_type(self): ...
    def default(self): ...

class Integer(Field):
    def type(self): ...
    def python_type(self): ...
    def default(self): ...

class Long(Field):
    def type(self): ...
    def python_type(self): ...
    def default(self): ...

class Float(Field):
    def type(self): ...
    def python_type(self): ...
    def default(self): ...

class Double(Field):
    def type(self): ...
    def python_type(self): ...
    def default(self): ...

class Bytes(Field):
    def type(self): ...
    def python_type(self): ...
    def default(self): ...
    def validate_type(self, name, val): ...

class String(Field):
    def type(self): ...
    def python_type(self): ...
    def validate_type(self, name, val): ...
    def default(self): ...

class CustomEnum(Field):
    enum_type: Incomplete
    values: Incomplete
    def __init__(self, enum_type, default: Incomplete | None = None, required: bool = False, required_default: bool = False) -> None: ...
    def type(self): ...
    def python_type(self): ...
    def validate_type(self, name, val): ...
    def schema(self): ...
    def schema_info(self, defined_names): ...
    def default(self): ...

class Array(Field):
    array_type: Incomplete
    def __init__(self, array_type, default: Incomplete | None = None, required: bool = False, required_default: bool = False) -> None: ...
    def type(self): ...
    def python_type(self): ...
    def validate_type(self, name, val): ...
    def schema(self): ...
    def schema_info(self, defined_names): ...
    def default(self): ...

class Map(Field):
    value_type: Incomplete
    def __init__(self, value_type, default: Incomplete | None = None, required: bool = False, required_default: bool = False) -> None: ...
    def type(self): ...
    def python_type(self): ...
    def validate_type(self, name, val): ...
    def schema(self): ...
    def schema_info(self, defined_names): ...
    def default(self): ...

def is_unicode(x): ...
