"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import google.protobuf.descriptor
import google.protobuf.duration_pb2
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import google.protobuf.timestamp_pb2
import google.protobuf.wrappers_pb2
import typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _Direction:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType
class _DirectionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Direction.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    FIRST: _Direction.ValueType  # 0
    """Incoming message for connectivity"""

    SECOND: _Direction.ValueType  # 1
    """Outgoing message for connectivity"""

class Direction(_Direction, metaclass=_DirectionEnumTypeWrapper):
    pass

FIRST: Direction.ValueType  # 0
"""Incoming message for connectivity"""

SECOND: Direction.ValueType  # 1
"""Outgoing message for connectivity"""

global___Direction = Direction


class _NullValue:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType
class _NullValueEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NullValue.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    NULL_VALUE: _NullValue.ValueType  # 0
class NullValue(_NullValue, metaclass=_NullValueEnumTypeWrapper):
    """--// Message body structure //--//

    """
    pass

NULL_VALUE: NullValue.ValueType  # 0
global___NullValue = NullValue


class _FailUnexpected:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType
class _FailUnexpectedEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FailUnexpected.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    NO: _FailUnexpected.ValueType  # 0
    """comparison won't fail in case of unexpected fields or messages"""

    FIELDS: _FailUnexpected.ValueType  # 1
    """comparison will fail in case of unexpected fields only"""

    FIELDS_AND_MESSAGES: _FailUnexpected.ValueType  # 2
    """comparison will fail in case of unexpected fields or messages"""

class FailUnexpected(_FailUnexpected, metaclass=_FailUnexpectedEnumTypeWrapper):
    """--// Settings //--//"""
    pass

NO: FailUnexpected.ValueType  # 0
"""comparison won't fail in case of unexpected fields or messages"""

FIELDS: FailUnexpected.ValueType  # 1
"""comparison will fail in case of unexpected fields only"""

FIELDS_AND_MESSAGES: FailUnexpected.ValueType  # 2
"""comparison will fail in case of unexpected fields or messages"""

global___FailUnexpected = FailUnexpected


class _FilterOperation:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType
class _FilterOperationEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FilterOperation.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    EQUAL: _FilterOperation.ValueType  # 0
    NOT_EQUAL: _FilterOperation.ValueType  # 1
    EMPTY: _FilterOperation.ValueType  # 2
    NOT_EMPTY: _FilterOperation.ValueType  # 3
    IN: _FilterOperation.ValueType  # 4
    NOT_IN: _FilterOperation.ValueType  # 5
    LIKE: _FilterOperation.ValueType  # 6
    NOT_LIKE: _FilterOperation.ValueType  # 7
    MORE: _FilterOperation.ValueType  # 8
    NOT_MORE: _FilterOperation.ValueType  # 9
    LESS: _FilterOperation.ValueType  # 10
    NOT_LESS: _FilterOperation.ValueType  # 11
    WILDCARD: _FilterOperation.ValueType  # 12
    NOT_WILDCARD: _FilterOperation.ValueType  # 13
    EQ_TIME_PRECISION: _FilterOperation.ValueType  # 14
    EQ_DECIMAL_PRECISION: _FilterOperation.ValueType  # 15
class FilterOperation(_FilterOperation, metaclass=_FilterOperationEnumTypeWrapper):
    """--// Message filter //--//

    """
    pass

EQUAL: FilterOperation.ValueType  # 0
NOT_EQUAL: FilterOperation.ValueType  # 1
EMPTY: FilterOperation.ValueType  # 2
NOT_EMPTY: FilterOperation.ValueType  # 3
IN: FilterOperation.ValueType  # 4
NOT_IN: FilterOperation.ValueType  # 5
LIKE: FilterOperation.ValueType  # 6
NOT_LIKE: FilterOperation.ValueType  # 7
MORE: FilterOperation.ValueType  # 8
NOT_MORE: FilterOperation.ValueType  # 9
LESS: FilterOperation.ValueType  # 10
NOT_LESS: FilterOperation.ValueType  # 11
WILDCARD: FilterOperation.ValueType  # 12
NOT_WILDCARD: FilterOperation.ValueType  # 13
EQ_TIME_PRECISION: FilterOperation.ValueType  # 14
EQ_DECIMAL_PRECISION: FilterOperation.ValueType  # 15
global___FilterOperation = FilterOperation


class _EventStatus:
    ValueType = typing.NewType('ValueType', builtins.int)
    V: typing_extensions.TypeAlias = ValueType
class _EventStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_EventStatus.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SUCCESS: _EventStatus.ValueType  # 0
    FAILED: _EventStatus.ValueType  # 1
class EventStatus(_EventStatus, metaclass=_EventStatusEnumTypeWrapper):
    """--// Event //--//"""
    pass

SUCCESS: EventStatus.ValueType  # 0
FAILED: EventStatus.ValueType  # 1
global___EventStatus = EventStatus


class ConnectionID(google.protobuf.message.Message):
    """--// Metadata structures //--//

    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SESSION_ALIAS_FIELD_NUMBER: builtins.int
    SESSION_GROUP_FIELD_NUMBER: builtins.int
    session_alias: typing.Text
    """Session identifier depends on protocol, target / sender"""

    session_group: typing.Text
    """Session group"""

    def __init__(self,
        *,
        session_alias: typing.Text = ...,
        session_group: typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["session_alias",b"session_alias","session_group",b"session_group"]) -> None: ...
global___ConnectionID = ConnectionID

class MessageID(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    CONNECTION_ID_FIELD_NUMBER: builtins.int
    DIRECTION_FIELD_NUMBER: builtins.int
    SEQUENCE_FIELD_NUMBER: builtins.int
    SUBSEQUENCE_FIELD_NUMBER: builtins.int
    BOOK_NAME_FIELD_NUMBER: builtins.int
    TIMESTAMP_FIELD_NUMBER: builtins.int
    @property
    def connection_id(self) -> global___ConnectionID: ...
    direction: global___Direction.ValueType
    """Transport direction."""

    sequence: builtins.int
    """Unique sequence number in session"""

    @property
    def subsequence(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """List of nested sequences in addition to the main one"""
        pass
    book_name: typing.Text
    @property
    def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Message creation timestamp"""
        pass
    def __init__(self,
        *,
        connection_id: typing.Optional[global___ConnectionID] = ...,
        direction: global___Direction.ValueType = ...,
        sequence: builtins.int = ...,
        subsequence: typing.Optional[typing.Iterable[builtins.int]] = ...,
        book_name: typing.Text = ...,
        timestamp: typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["connection_id",b"connection_id","timestamp",b"timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["book_name",b"book_name","connection_id",b"connection_id","direction",b"direction","sequence",b"sequence","subsequence",b"subsequence","timestamp",b"timestamp"]) -> None: ...
global___MessageID = MessageID

class EventBatchMetadata(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    EXTERNAL_QUEUE_FIELD_NUMBER: builtins.int
    external_queue: typing.Text
    """External user queue can be used for routing by internal box logic."""

    def __init__(self,
        *,
        external_queue: typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["external_queue",b"external_queue"]) -> None: ...
global___EventBatchMetadata = EventBatchMetadata

class MessageGroupBatchMetadata(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    EXTERNAL_QUEUE_FIELD_NUMBER: builtins.int
    external_queue: typing.Text
    """External user queue can be used for routing by internal box logic."""

    def __init__(self,
        *,
        external_queue: typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["external_queue",b"external_queue"]) -> None: ...
global___MessageGroupBatchMetadata = MessageGroupBatchMetadata

class MessageMetadata(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    class PropertiesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: typing.Text
        value: typing.Text
        def __init__(self,
            *,
            key: typing.Text = ...,
            value: typing.Text = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...

    ID_FIELD_NUMBER: builtins.int
    MESSAGE_TYPE_FIELD_NUMBER: builtins.int
    PROPERTIES_FIELD_NUMBER: builtins.int
    PROTOCOL_FIELD_NUMBER: builtins.int
    @property
    def id(self) -> global___MessageID:
        """Message id should be unique in session"""
        pass
    message_type: typing.Text
    """Message type by dictionary"""

    @property
    def properties(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]:
        """Additional properties for the message"""
        pass
    protocol: typing.Text
    """Protocol to be used when encoding the message"""

    def __init__(self,
        *,
        id: typing.Optional[global___MessageID] = ...,
        message_type: typing.Text = ...,
        properties: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
        protocol: typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["id",b"id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["id",b"id","message_type",b"message_type","properties",b"properties","protocol",b"protocol"]) -> None: ...
global___MessageMetadata = MessageMetadata

class RawMessageMetadata(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    class PropertiesEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: typing.Text
        value: typing.Text
        def __init__(self,
            *,
            key: typing.Text = ...,
            value: typing.Text = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...

    ID_FIELD_NUMBER: builtins.int
    PROPERTIES_FIELD_NUMBER: builtins.int
    PROTOCOL_FIELD_NUMBER: builtins.int
    @property
    def id(self) -> global___MessageID:
        """Message id should be unique in session"""
        pass
    @property
    def properties(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]:
        """Additional properties for the raw message"""
        pass
    protocol: typing.Text
    """Protocol to be used when decoding the message"""

    def __init__(self,
        *,
        id: typing.Optional[global___MessageID] = ...,
        properties: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
        protocol: typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["id",b"id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["id",b"id","properties",b"properties","protocol",b"protocol"]) -> None: ...
global___RawMessageMetadata = RawMessageMetadata

class Value(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    NULL_VALUE_FIELD_NUMBER: builtins.int
    SIMPLE_VALUE_FIELD_NUMBER: builtins.int
    MESSAGE_VALUE_FIELD_NUMBER: builtins.int
    LIST_VALUE_FIELD_NUMBER: builtins.int
    null_value: global___NullValue.ValueType
    simple_value: typing.Text
    @property
    def message_value(self) -> global___Message: ...
    @property
    def list_value(self) -> global___ListValue: ...
    def __init__(self,
        *,
        null_value: global___NullValue.ValueType = ...,
        simple_value: typing.Text = ...,
        message_value: typing.Optional[global___Message] = ...,
        list_value: typing.Optional[global___ListValue] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["kind",b"kind","list_value",b"list_value","message_value",b"message_value","null_value",b"null_value","simple_value",b"simple_value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["kind",b"kind","list_value",b"list_value","message_value",b"message_value","null_value",b"null_value","simple_value",b"simple_value"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["kind",b"kind"]) -> typing.Optional[typing_extensions.Literal["null_value","simple_value","message_value","list_value"]]: ...
global___Value = Value

class ListValue(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    VALUES_FIELD_NUMBER: builtins.int
    @property
    def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Value]: ...
    def __init__(self,
        *,
        values: typing.Optional[typing.Iterable[global___Value]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["values",b"values"]) -> None: ...
global___ListValue = ListValue

class Message(google.protobuf.message.Message):
    """--// Message / Raw structures //--//

    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    class FieldsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: typing.Text
        @property
        def value(self) -> global___Value: ...
        def __init__(self,
            *,
            key: typing.Text = ...,
            value: typing.Optional[global___Value] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...

    PARENT_EVENT_ID_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    FIELDS_FIELD_NUMBER: builtins.int
    @property
    def parent_event_id(self) -> global___EventID:
        """It maybe used to store event related to message life cycle"""
        pass
    @property
    def metadata(self) -> global___MessageMetadata: ...
    @property
    def fields(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Value]: ...
    def __init__(self,
        *,
        parent_event_id: typing.Optional[global___EventID] = ...,
        metadata: typing.Optional[global___MessageMetadata] = ...,
        fields: typing.Optional[typing.Mapping[typing.Text, global___Value]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["metadata",b"metadata","parent_event_id",b"parent_event_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["fields",b"fields","metadata",b"metadata","parent_event_id",b"parent_event_id"]) -> None: ...
global___Message = Message

class RawMessage(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    PARENT_EVENT_ID_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    BODY_FIELD_NUMBER: builtins.int
    @property
    def parent_event_id(self) -> global___EventID:
        """It maybe used to store event related to message life cycle"""
        pass
    @property
    def metadata(self) -> global___RawMessageMetadata: ...
    body: builtins.bytes
    def __init__(self,
        *,
        parent_event_id: typing.Optional[global___EventID] = ...,
        metadata: typing.Optional[global___RawMessageMetadata] = ...,
        body: builtins.bytes = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["metadata",b"metadata","parent_event_id",b"parent_event_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["body",b"body","metadata",b"metadata","parent_event_id",b"parent_event_id"]) -> None: ...
global___RawMessage = RawMessage

class AnyMessage(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    MESSAGE_FIELD_NUMBER: builtins.int
    RAW_MESSAGE_FIELD_NUMBER: builtins.int
    @property
    def message(self) -> global___Message: ...
    @property
    def raw_message(self) -> global___RawMessage: ...
    def __init__(self,
        *,
        message: typing.Optional[global___Message] = ...,
        raw_message: typing.Optional[global___RawMessage] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["kind",b"kind","message",b"message","raw_message",b"raw_message"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["kind",b"kind","message",b"message","raw_message",b"raw_message"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["kind",b"kind"]) -> typing.Optional[typing_extensions.Literal["message","raw_message"]]: ...
global___AnyMessage = AnyMessage

class MessageGroup(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    MESSAGES_FIELD_NUMBER: builtins.int
    @property
    def messages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnyMessage]: ...
    def __init__(self,
        *,
        messages: typing.Optional[typing.Iterable[global___AnyMessage]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["messages",b"messages"]) -> None: ...
global___MessageGroup = MessageGroup

class MessageBatch(google.protobuf.message.Message):
    """--// Message batch //--//

    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    MESSAGES_FIELD_NUMBER: builtins.int
    @property
    def messages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Message]: ...
    def __init__(self,
        *,
        messages: typing.Optional[typing.Iterable[global___Message]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["messages",b"messages"]) -> None: ...
global___MessageBatch = MessageBatch

class RawMessageBatch(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    MESSAGES_FIELD_NUMBER: builtins.int
    @property
    def messages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RawMessage]: ...
    def __init__(self,
        *,
        messages: typing.Optional[typing.Iterable[global___RawMessage]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["messages",b"messages"]) -> None: ...
global___RawMessageBatch = RawMessageBatch

class MessageGroupBatch(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    METADATA_FIELD_NUMBER: builtins.int
    GROUPS_FIELD_NUMBER: builtins.int
    @property
    def metadata(self) -> global___MessageGroupBatchMetadata: ...
    @property
    def groups(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MessageGroup]: ...
    def __init__(self,
        *,
        metadata: typing.Optional[global___MessageGroupBatchMetadata] = ...,
        groups: typing.Optional[typing.Iterable[global___MessageGroup]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["metadata",b"metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["groups",b"groups","metadata",b"metadata"]) -> None: ...
global___MessageGroupBatch = MessageGroupBatch

class RequestStatus(google.protobuf.message.Message):
    """--// RPC call response //--//

    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    class _Status:
        ValueType = typing.NewType('ValueType', builtins.int)
        V: typing_extensions.TypeAlias = ValueType
    class _StatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[RequestStatus._Status.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        SUCCESS: RequestStatus._Status.ValueType  # 0
        ERROR: RequestStatus._Status.ValueType  # 1
    class Status(_Status, metaclass=_StatusEnumTypeWrapper):
        pass

    SUCCESS: RequestStatus.Status.ValueType  # 0
    ERROR: RequestStatus.Status.ValueType  # 1

    STATUS_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    status: global___RequestStatus.Status.ValueType
    message: typing.Text
    def __init__(self,
        *,
        status: global___RequestStatus.Status.ValueType = ...,
        message: typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["message",b"message","status",b"status"]) -> None: ...
global___RequestStatus = RequestStatus

class ComparisonSettings(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    FAIL_UNEXPECTED_FIELD_NUMBER: builtins.int
    fail_unexpected: global___FailUnexpected.ValueType
    def __init__(self,
        *,
        fail_unexpected: global___FailUnexpected.ValueType = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["fail_unexpected",b"fail_unexpected"]) -> None: ...
global___ComparisonSettings = ComparisonSettings

class RootComparisonSettings(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    IGNORE_FIELDS_FIELD_NUMBER: builtins.int
    CHECK_REPEATING_GROUP_ORDER_FIELD_NUMBER: builtins.int
    TIME_PRECISION_FIELD_NUMBER: builtins.int
    DECIMAL_PRECISION_FIELD_NUMBER: builtins.int
    @property
    def ignore_fields(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]:
        """
        These fields will not be considered during comparison. It concerns fields with simple or collection types.
        Comparison result will have the NA status for them.
        """
        pass
    check_repeating_group_order: builtins.bool
    """
    Enables order verification in repeating groups according to defined filters.
    """

    @property
    def time_precision(self) -> google.protobuf.duration_pb2.Duration:
        """
        Time precision format for comparing timestamps
        """
        pass
    decimal_precision: typing.Text
    """
    Decimal precision format for comparing numbers. E.g. 0.0001, 0.125, 125E-3 could be supported
    """

    def __init__(self,
        *,
        ignore_fields: typing.Optional[typing.Iterable[typing.Text]] = ...,
        check_repeating_group_order: builtins.bool = ...,
        time_precision: typing.Optional[google.protobuf.duration_pb2.Duration] = ...,
        decimal_precision: typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["time_precision",b"time_precision"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["check_repeating_group_order",b"check_repeating_group_order","decimal_precision",b"decimal_precision","ignore_fields",b"ignore_fields","time_precision",b"time_precision"]) -> None: ...
global___RootComparisonSettings = RootComparisonSettings

class ValueFilter(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    OPERATION_FIELD_NUMBER: builtins.int
    KEY_FIELD_NUMBER: builtins.int
    SIMPLE_FILTER_FIELD_NUMBER: builtins.int
    MESSAGE_FILTER_FIELD_NUMBER: builtins.int
    LIST_FILTER_FIELD_NUMBER: builtins.int
    SIMPLE_LIST_FIELD_NUMBER: builtins.int
    NULL_VALUE_FIELD_NUMBER: builtins.int
    operation: global___FilterOperation.ValueType
    key: builtins.bool
    simple_filter: typing.Text
    @property
    def message_filter(self) -> global___MessageFilter: ...
    @property
    def list_filter(self) -> global___ListValueFilter: ...
    @property
    def simple_list(self) -> global___SimpleList: ...
    null_value: global___NullValue.ValueType
    def __init__(self,
        *,
        operation: global___FilterOperation.ValueType = ...,
        key: builtins.bool = ...,
        simple_filter: typing.Text = ...,
        message_filter: typing.Optional[global___MessageFilter] = ...,
        list_filter: typing.Optional[global___ListValueFilter] = ...,
        simple_list: typing.Optional[global___SimpleList] = ...,
        null_value: global___NullValue.ValueType = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["kind",b"kind","list_filter",b"list_filter","message_filter",b"message_filter","null_value",b"null_value","simple_filter",b"simple_filter","simple_list",b"simple_list"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["key",b"key","kind",b"kind","list_filter",b"list_filter","message_filter",b"message_filter","null_value",b"null_value","operation",b"operation","simple_filter",b"simple_filter","simple_list",b"simple_list"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["kind",b"kind"]) -> typing.Optional[typing_extensions.Literal["simple_filter","message_filter","list_filter","simple_list","null_value"]]: ...
global___ValueFilter = ValueFilter

class ListValueFilter(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    VALUES_FIELD_NUMBER: builtins.int
    @property
    def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ValueFilter]: ...
    def __init__(self,
        *,
        values: typing.Optional[typing.Iterable[global___ValueFilter]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["values",b"values"]) -> None: ...
global___ListValueFilter = ListValueFilter

class SimpleList(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    SIMPLE_VALUES_FIELD_NUMBER: builtins.int
    @property
    def simple_values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
    def __init__(self,
        *,
        simple_values: typing.Optional[typing.Iterable[typing.Text]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["simple_values",b"simple_values"]) -> None: ...
global___SimpleList = SimpleList

class MessageFilter(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    class FieldsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: typing.Text
        @property
        def value(self) -> global___ValueFilter: ...
        def __init__(self,
            *,
            key: typing.Text = ...,
            value: typing.Optional[global___ValueFilter] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...

    FIELDS_FIELD_NUMBER: builtins.int
    COMPARISON_SETTINGS_FIELD_NUMBER: builtins.int
    @property
    def fields(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___ValueFilter]: ...
    @property
    def comparison_settings(self) -> global___ComparisonSettings: ...
    def __init__(self,
        *,
        fields: typing.Optional[typing.Mapping[typing.Text, global___ValueFilter]] = ...,
        comparison_settings: typing.Optional[global___ComparisonSettings] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["comparison_settings",b"comparison_settings"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["comparison_settings",b"comparison_settings","fields",b"fields"]) -> None: ...
global___MessageFilter = MessageFilter

class MetadataFilter(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    class SimpleFilter(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        OPERATION_FIELD_NUMBER: builtins.int
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        SIMPLE_LIST_FIELD_NUMBER: builtins.int
        operation: global___FilterOperation.ValueType
        key: builtins.bool
        value: typing.Text
        @property
        def simple_list(self) -> global___SimpleList: ...
        def __init__(self,
            *,
            operation: global___FilterOperation.ValueType = ...,
            key: builtins.bool = ...,
            value: typing.Text = ...,
            simple_list: typing.Optional[global___SimpleList] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["filter_value",b"filter_value","simple_list",b"simple_list","value",b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["filter_value",b"filter_value","key",b"key","operation",b"operation","simple_list",b"simple_list","value",b"value"]) -> None: ...
        def WhichOneof(self, oneof_group: typing_extensions.Literal["filter_value",b"filter_value"]) -> typing.Optional[typing_extensions.Literal["value","simple_list"]]: ...

    class PropertyFiltersEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: typing.Text
        @property
        def value(self) -> global___MetadataFilter.SimpleFilter: ...
        def __init__(self,
            *,
            key: typing.Text = ...,
            value: typing.Optional[global___MetadataFilter.SimpleFilter] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...

    PROPERTY_FILTERS_FIELD_NUMBER: builtins.int
    @property
    def property_filters(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___MetadataFilter.SimpleFilter]: ...
    def __init__(self,
        *,
        property_filters: typing.Optional[typing.Mapping[typing.Text, global___MetadataFilter.SimpleFilter]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["property_filters",b"property_filters"]) -> None: ...
global___MetadataFilter = MetadataFilter

class RootMessageFilter(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    MESSAGETYPE_FIELD_NUMBER: builtins.int
    MESSAGE_FILTER_FIELD_NUMBER: builtins.int
    METADATA_FILTER_FIELD_NUMBER: builtins.int
    COMPARISON_SETTINGS_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    messageType: typing.Text
    """
    The message type to match
    """

    @property
    def message_filter(self) -> global___MessageFilter:
        """
        The filter to match message's content
        """
        pass
    @property
    def metadata_filter(self) -> global___MetadataFilter:
        """
        The filter to match message's metadata content
        """
        pass
    @property
    def comparison_settings(self) -> global___RootComparisonSettings:
        """
        Settings that will be used for comparing both filters (MessageFilter and MetadataFilter)
        """
        pass
    @property
    def description(self) -> google.protobuf.wrappers_pb2.StringValue:
        """
        Description that may contain some information about the RootMessageFilter
        """
        pass
    def __init__(self,
        *,
        messageType: typing.Text = ...,
        message_filter: typing.Optional[global___MessageFilter] = ...,
        metadata_filter: typing.Optional[global___MetadataFilter] = ...,
        comparison_settings: typing.Optional[global___RootComparisonSettings] = ...,
        description: typing.Optional[google.protobuf.wrappers_pb2.StringValue] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["comparison_settings",b"comparison_settings","description",b"description","message_filter",b"message_filter","metadata_filter",b"metadata_filter"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["comparison_settings",b"comparison_settings","description",b"description","messageType",b"messageType","message_filter",b"message_filter","metadata_filter",b"metadata_filter"]) -> None: ...
global___RootMessageFilter = RootMessageFilter

class Checkpoint(google.protobuf.message.Message):
    """--// Checkpoint //--//

    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    class BookNameToSessionAliasToDirectionCheckpointEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: typing.Text
        @property
        def value(self) -> global___Checkpoint.SessionAliasToDirectionCheckpoint: ...
        def __init__(self,
            *,
            key: typing.Text = ...,
            value: typing.Optional[global___Checkpoint.SessionAliasToDirectionCheckpoint] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...

    class SessionAliasToDirectionCheckpoint(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        class SessionAliasToDirectionCheckpointEntry(google.protobuf.message.Message):
            DESCRIPTOR: google.protobuf.descriptor.Descriptor
            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: typing.Text
            @property
            def value(self) -> global___Checkpoint.DirectionCheckpoint: ...
            def __init__(self,
                *,
                key: typing.Text = ...,
                value: typing.Optional[global___Checkpoint.DirectionCheckpoint] = ...,
                ) -> None: ...
            def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...

        SESSION_ALIAS_TO_DIRECTION_CHECKPOINT_FIELD_NUMBER: builtins.int
        @property
        def session_alias_to_direction_checkpoint(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Checkpoint.DirectionCheckpoint]: ...
        def __init__(self,
            *,
            session_alias_to_direction_checkpoint: typing.Optional[typing.Mapping[typing.Text, global___Checkpoint.DirectionCheckpoint]] = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["session_alias_to_direction_checkpoint",b"session_alias_to_direction_checkpoint"]) -> None: ...

    class DirectionCheckpoint(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        class DirectionToCheckpointDataEntry(google.protobuf.message.Message):
            DESCRIPTOR: google.protobuf.descriptor.Descriptor
            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.int
            @property
            def value(self) -> global___Checkpoint.CheckpointData: ...
            def __init__(self,
                *,
                key: builtins.int = ...,
                value: typing.Optional[global___Checkpoint.CheckpointData] = ...,
                ) -> None: ...
            def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...

        DIRECTION_TO_CHECKPOINT_DATA_FIELD_NUMBER: builtins.int
        @property
        def direction_to_checkpoint_data(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, global___Checkpoint.CheckpointData]: ...
        def __init__(self,
            *,
            direction_to_checkpoint_data: typing.Optional[typing.Mapping[builtins.int, global___Checkpoint.CheckpointData]] = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["direction_to_checkpoint_data",b"direction_to_checkpoint_data"]) -> None: ...

    class CheckpointData(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor
        SEQUENCE_FIELD_NUMBER: builtins.int
        TIMESTAMP_FIELD_NUMBER: builtins.int
        sequence: builtins.int
        """Message sequence number in session"""

        @property
        def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
            """Message creation timestamp"""
            pass
        def __init__(self,
            *,
            sequence: builtins.int = ...,
            timestamp: typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["timestamp",b"timestamp"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["sequence",b"sequence","timestamp",b"timestamp"]) -> None: ...

    ID_FIELD_NUMBER: builtins.int
    BOOK_NAME_TO_SESSION_ALIAS_TO_DIRECTION_CHECKPOINT_FIELD_NUMBER: builtins.int
    id: typing.Text
    @property
    def book_name_to_session_alias_to_direction_checkpoint(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Checkpoint.SessionAliasToDirectionCheckpoint]: ...
    def __init__(self,
        *,
        id: typing.Text = ...,
        book_name_to_session_alias_to_direction_checkpoint: typing.Optional[typing.Mapping[typing.Text, global___Checkpoint.SessionAliasToDirectionCheckpoint]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["book_name_to_session_alias_to_direction_checkpoint",b"book_name_to_session_alias_to_direction_checkpoint","id",b"id"]) -> None: ...
global___Checkpoint = Checkpoint

class EventID(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ID_FIELD_NUMBER: builtins.int
    BOOK_NAME_FIELD_NUMBER: builtins.int
    SCOPE_FIELD_NUMBER: builtins.int
    START_TIMESTAMP_FIELD_NUMBER: builtins.int
    id: typing.Text
    """Unique event id in TH2 deploy"""

    book_name: typing.Text
    scope: typing.Text
    @property
    def start_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(self,
        *,
        id: typing.Text = ...,
        book_name: typing.Text = ...,
        scope: typing.Text = ...,
        start_timestamp: typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["start_timestamp",b"start_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["book_name",b"book_name","id",b"id","scope",b"scope","start_timestamp",b"start_timestamp"]) -> None: ...
global___EventID = EventID

class Event(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    ID_FIELD_NUMBER: builtins.int
    PARENT_ID_FIELD_NUMBER: builtins.int
    END_TIMESTAMP_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    BODY_FIELD_NUMBER: builtins.int
    ATTACHED_MESSAGE_IDS_FIELD_NUMBER: builtins.int
    @property
    def id(self) -> global___EventID: ...
    @property
    def parent_id(self) -> global___EventID:
        """Event id of parent event. It is null for root event"""
        pass
    @property
    def end_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    status: global___EventStatus.ValueType
    """Aggregated status of current and children events which sync written."""

    name: typing.Text
    type: typing.Text
    body: builtins.bytes
    @property
    def attached_message_ids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MessageID]: ...
    def __init__(self,
        *,
        id: typing.Optional[global___EventID] = ...,
        parent_id: typing.Optional[global___EventID] = ...,
        end_timestamp: typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        status: global___EventStatus.ValueType = ...,
        name: typing.Text = ...,
        type: typing.Text = ...,
        body: builtins.bytes = ...,
        attached_message_ids: typing.Optional[typing.Iterable[global___MessageID]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["end_timestamp",b"end_timestamp","id",b"id","parent_id",b"parent_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["attached_message_ids",b"attached_message_ids","body",b"body","end_timestamp",b"end_timestamp","id",b"id","name",b"name","parent_id",b"parent_id","status",b"status","type",b"type"]) -> None: ...
global___Event = Event

class EventBatch(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    METADATA_FIELD_NUMBER: builtins.int
    PARENT_EVENT_ID_FIELD_NUMBER: builtins.int
    EVENTS_FIELD_NUMBER: builtins.int
    @property
    def metadata(self) -> global___EventBatchMetadata: ...
    @property
    def parent_event_id(self) -> global___EventID: ...
    @property
    def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Event]:
        """Events optional related to between themselves. No events outside this batch should refer to the events in this batch."""
        pass
    def __init__(self,
        *,
        metadata: typing.Optional[global___EventBatchMetadata] = ...,
        parent_event_id: typing.Optional[global___EventID] = ...,
        events: typing.Optional[typing.Iterable[global___Event]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["metadata",b"metadata","parent_event_id",b"parent_event_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["events",b"events","metadata",b"metadata","parent_event_id",b"parent_event_id"]) -> None: ...
global___EventBatch = EventBatch
