#
# Autogenerated by Thrift for thrift/compiler/test/fixtures/inject_metadata_fields/src/module.thrift
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#  @generated
#

import enum as _python_std_enum
import folly.iobuf as _fbthrift_iobuf
import thrift.py3.types
import thrift.python.types
import thrift.py3.exceptions
import typing as _typing

import sys
import itertools
import foo.types as _foo_types


class Fields(thrift.py3.types.Struct, _typing.Hashable):
    class __fbthrift_IsSet:
        injected_field: bool
        pass

    injected_field: _typing.Final[str] = ...

    def __init__(
        self, *,
        injected_field: _typing.Optional[str]=None
    ) -> None: ...

    def __call__(
        self, *,
        injected_field: _typing.Union[str, None]=None
    ) -> Fields: ...

    def __reduce__(self) -> _typing.Tuple[_typing.Callable, _typing.Tuple[_typing.Type['Fields'], bytes]]: ...
    def __hash__(self) -> int: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __lt__(self, other: 'Fields') -> bool: ...
    def __gt__(self, other: 'Fields') -> bool: ...
    def __le__(self, other: 'Fields') -> bool: ...
    def __ge__(self, other: 'Fields') -> bool: ...

    def _to_python(self) -> "module.thrift_types.Fields": ...   # type: ignore
    def _to_py3(self) -> Fields: ...
    def _to_py_deprecated(self) -> "module.ttypes.Fields": ...   # type: ignore

class FieldsInjectedToEmptyStruct(thrift.py3.types.Struct, _typing.Hashable):
    class __fbthrift_IsSet:
        injected_field: bool
        pass

    injected_field: _typing.Final[str] = ...

    def __init__(
        self, *,
        injected_field: _typing.Optional[str]=None
    ) -> None: ...

    def __call__(
        self, *,
        injected_field: _typing.Union[str, None]=None
    ) -> FieldsInjectedToEmptyStruct: ...

    def __reduce__(self) -> _typing.Tuple[_typing.Callable, _typing.Tuple[_typing.Type['FieldsInjectedToEmptyStruct'], bytes]]: ...
    def __hash__(self) -> int: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __lt__(self, other: 'FieldsInjectedToEmptyStruct') -> bool: ...
    def __gt__(self, other: 'FieldsInjectedToEmptyStruct') -> bool: ...
    def __le__(self, other: 'FieldsInjectedToEmptyStruct') -> bool: ...
    def __ge__(self, other: 'FieldsInjectedToEmptyStruct') -> bool: ...

    def _to_python(self) -> "module.thrift_types.FieldsInjectedToEmptyStruct": ...   # type: ignore
    def _to_py3(self) -> FieldsInjectedToEmptyStruct: ...
    def _to_py_deprecated(self) -> "module.ttypes.FieldsInjectedToEmptyStruct": ...   # type: ignore

class FieldsInjectedToStruct(thrift.py3.types.Struct, _typing.Hashable):
    class __fbthrift_IsSet:
        string_field: bool
        injected_field: bool
        pass

    string_field: _typing.Final[str] = ...
    injected_field: _typing.Final[str] = ...

    def __init__(
        self, *,
        string_field: _typing.Optional[str]=None,
        injected_field: _typing.Optional[str]=None
    ) -> None: ...

    def __call__(
        self, *,
        string_field: _typing.Union[str, None]=None,
        injected_field: _typing.Union[str, None]=None
    ) -> FieldsInjectedToStruct: ...

    def __reduce__(self) -> _typing.Tuple[_typing.Callable, _typing.Tuple[_typing.Type['FieldsInjectedToStruct'], bytes]]: ...
    def __hash__(self) -> int: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __lt__(self, other: 'FieldsInjectedToStruct') -> bool: ...
    def __gt__(self, other: 'FieldsInjectedToStruct') -> bool: ...
    def __le__(self, other: 'FieldsInjectedToStruct') -> bool: ...
    def __ge__(self, other: 'FieldsInjectedToStruct') -> bool: ...

    def _to_python(self) -> "module.thrift_types.FieldsInjectedToStruct": ...   # type: ignore
    def _to_py3(self) -> FieldsInjectedToStruct: ...
    def _to_py_deprecated(self) -> "module.ttypes.FieldsInjectedToStruct": ...   # type: ignore

class FieldsInjectedWithIncludedStruct(thrift.py3.types.Struct, _typing.Hashable):
    class __fbthrift_IsSet:
        string_field: bool
        injected_field: bool
        injected_structured_annotation_field: bool
        injected_unstructured_annotation_field: bool
        pass

    string_field: _typing.Final[str] = ...
    injected_field: _typing.Final[str] = ...
    injected_structured_annotation_field: _typing.Final[_typing.Optional[str]] = ...
    injected_unstructured_annotation_field: _typing.Final[_typing.Optional[str]] = ...

    def __init__(
        self, *,
        string_field: _typing.Optional[str]=None,
        injected_field: _typing.Optional[str]=None,
        injected_structured_annotation_field: _typing.Optional[str]=None,
        injected_unstructured_annotation_field: _typing.Optional[str]=None
    ) -> None: ...

    def __call__(
        self, *,
        string_field: _typing.Union[str, None]=None,
        injected_field: _typing.Union[str, None]=None,
        injected_structured_annotation_field: _typing.Union[str, None]=None,
        injected_unstructured_annotation_field: _typing.Union[str, None]=None
    ) -> FieldsInjectedWithIncludedStruct: ...

    def __reduce__(self) -> _typing.Tuple[_typing.Callable, _typing.Tuple[_typing.Type['FieldsInjectedWithIncludedStruct'], bytes]]: ...
    def __hash__(self) -> int: ...
    def __str__(self) -> str: ...
    def __repr__(self) -> str: ...
    def __lt__(self, other: 'FieldsInjectedWithIncludedStruct') -> bool: ...
    def __gt__(self, other: 'FieldsInjectedWithIncludedStruct') -> bool: ...
    def __le__(self, other: 'FieldsInjectedWithIncludedStruct') -> bool: ...
    def __ge__(self, other: 'FieldsInjectedWithIncludedStruct') -> bool: ...

    def _to_python(self) -> "module.thrift_types.FieldsInjectedWithIncludedStruct": ...   # type: ignore
    def _to_py3(self) -> FieldsInjectedWithIncludedStruct: ...
    def _to_py_deprecated(self) -> "module.ttypes.FieldsInjectedWithIncludedStruct": ...   # type: ignore

