# Path: google/cloud/firestore_v1/types/common.py
# class DocumentMask(proto.Message):
# class Precondition(proto.Message):
# class TransactionOptions(proto.Message):
#     class ReadWrite(proto.Message):
#     class ReadOnly(proto.Message):
# 
# Path: google/cloud/firestore_v1/types/document.py
# class Document(proto.Message):
# class Value(proto.Message):
# class ArrayValue(proto.Message):
# class MapValue(proto.Message):
# 
# Path: google/cloud/firestore_v1/types/query.py
# class StructuredQuery(proto.Message):
#     class Direction(proto.Enum):
#     class CollectionSelector(proto.Message):
#     class Filter(proto.Message):
#     class CompositeFilter(proto.Message):
#         class Operator(proto.Enum):
#     class FieldFilter(proto.Message):
#         class Operator(proto.Enum):
#     class UnaryFilter(proto.Message):
#         class Operator(proto.Enum):
#     class Order(proto.Message):
#     class FieldReference(proto.Message):
#     class Projection(proto.Message):
# class Cursor(proto.Message):
#         DIRECTION_UNSPECIFIED = 0
#         ASCENDING = 1
#         DESCENDING = 2
#             OPERATOR_UNSPECIFIED = 0
#             AND = 1
#             OPERATOR_UNSPECIFIED = 0
#             LESS_THAN = 1
#             LESS_THAN_OR_EQUAL = 2
#             GREATER_THAN = 3
#             GREATER_THAN_OR_EQUAL = 4
#             EQUAL = 5
#             NOT_EQUAL = 6
#             ARRAY_CONTAINS = 7
#             IN = 8
#             ARRAY_CONTAINS_ANY = 9
#             NOT_IN = 10
#             OPERATOR_UNSPECIFIED = 0
#             IS_NAN = 2
#             IS_NULL = 3
#             IS_NOT_NAN = 4
#             IS_NOT_NULL = 5
# 
# Path: google/cloud/firestore_v1/types/write.py
# class Write(proto.Message):
# class DocumentTransform(proto.Message):
#     class FieldTransform(proto.Message):
#         class ServerValue(proto.Enum):
# class WriteResult(proto.Message):
# class DocumentChange(proto.Message):
# class DocumentDelete(proto.Message):
# class DocumentRemove(proto.Message):
# class ExistenceFilter(proto.Message):
#             SERVER_VALUE_UNSPECIFIED = 0
#             REQUEST_TIME = 1


import proto  # type: ignore
from google.cloud.firestore_v1.types import common
from google.cloud.firestore_v1.types import document as gf_document
from google.cloud.firestore_v1.types import query as gf_query
from google.cloud.firestore_v1.types import write
from google.protobuf import timestamp_pb2  # type: ignore
from google.rpc import status_pb2  # type: ignore
            The consistent ``read_time`` for the given ``target_ids``
            (omitted when the target_ids are not at a consistent
            snapshot).

            The stream is guaranteed to send a ``read_time`` with
            ``target_ids`` empty whenever the entire stream reaches a
            new consistent snapshot. ADD, CURRENT, and RESET messages
            are guaranteed to (eventually) result in a new consistent
            snapshot (while NO_CHANGE and REMOVE messages are not).

            For a given stream, ``read_time`` is guaranteed to be
            monotonically increasing.
    """

    class TargetChangeType(proto.Enum):
        r"""The type of change."""
        NO_CHANGE = 0
        ADD = 1
        REMOVE = 2
        CURRENT = 3
        RESET = 4

    target_change_type = proto.Field(proto.ENUM, number=1, enum=TargetChangeType,)
    target_ids = proto.RepeatedField(proto.INT32, number=2,)
    cause = proto.Field(proto.MESSAGE, number=3, message=status_pb2.Status,)
    resume_token = proto.Field(proto.BYTES, number=4,)
    read_time = proto.Field(proto.MESSAGE, number=6, message=timestamp_pb2.Timestamp,)


class ListCollectionIdsRequest(proto.Message):

# Path: google/cloud/firestore_v1/types/common.py
# class DocumentMask(proto.Message):
# class Precondition(proto.Message):
# class TransactionOptions(proto.Message):
#     class ReadWrite(proto.Message):
#     class ReadOnly(proto.Message):
# 
# Path: google/cloud/firestore_v1/types/document.py
# class Document(proto.Message):
# class Value(proto.Message):
# class ArrayValue(proto.Message):
# class MapValue(proto.Message):
# 
# Path: google/cloud/firestore_v1/types/query.py
# class StructuredQuery(proto.Message):
#     class Direction(proto.Enum):
#     class CollectionSelector(proto.Message):
#     class Filter(proto.Message):
#     class CompositeFilter(proto.Message):
#         class Operator(proto.Enum):
#     class FieldFilter(proto.Message):
#         class Operator(proto.Enum):
#     class UnaryFilter(proto.Message):
#         class Operator(proto.Enum):
#     class Order(proto.Message):
#     class FieldReference(proto.Message):
#     class Projection(proto.Message):
# class Cursor(proto.Message):
#         DIRECTION_UNSPECIFIED = 0
#         ASCENDING = 1
#         DESCENDING = 2
#             OPERATOR_UNSPECIFIED = 0
#             AND = 1
#             OPERATOR_UNSPECIFIED = 0
#             LESS_THAN = 1
#             LESS_THAN_OR_EQUAL = 2
#             GREATER_THAN = 3
#             GREATER_THAN_OR_EQUAL = 4
#             EQUAL = 5
#             NOT_EQUAL = 6
#             ARRAY_CONTAINS = 7
#             IN = 8
#             ARRAY_CONTAINS_ANY = 9
#             NOT_IN = 10
#             OPERATOR_UNSPECIFIED = 0
#             IS_NAN = 2
#             IS_NULL = 3
#             IS_NOT_NAN = 4
#             IS_NOT_NULL = 5
# 
# Path: google/cloud/firestore_v1/types/write.py
# class Write(proto.Message):
# class DocumentTransform(proto.Message):
#     class FieldTransform(proto.Message):
#         class ServerValue(proto.Enum):
# class WriteResult(proto.Message):
# class DocumentChange(proto.Message):
# class DocumentDelete(proto.Message):
# class DocumentRemove(proto.Message):
# class ExistenceFilter(proto.Message):
#             SERVER_VALUE_UNSPECIFIED = 0
#             REQUEST_TIME = 1


# Path: google/cloud/firestore_v1/types/firestore.py
import proto  # type: ignore
from google.cloud.firestore_v1.types import common
from google.cloud.firestore_v1.types import document as gf_document
from google.cloud.firestore_v1.types import query as gf_query
from google.cloud.firestore_v1.types import write
from google.protobuf import timestamp_pb2  # type: ignore
from google.rpc import status_pb2  # type: ignore

            The consistent ``read_time`` for the given ``target_ids``
            (omitted when the target_ids are not at a consistent
            snapshot).

            The stream is guaranteed to send a ``read_time`` with
            ``target_ids`` empty whenever the entire stream reaches a
            new consistent snapshot. ADD, CURRENT, and RESET messages
            are guaranteed to (eventually) result in a new consistent
            snapshot (while NO_CHANGE and REMOVE messages are not).

            For a given stream, ``read_time`` is guaranteed to be
            monotonically increasing.
    """

    class TargetChangeType(proto.Enum):
        r"""The type of change."""
        NO_CHANGE = 0
        ADD = 1
        REMOVE = 2
        CURRENT = 3
        RESET = 4

    target_change_type = proto.Field(proto.ENUM, number=1, enum=TargetChangeType,)
    target_ids = proto.RepeatedField(proto.INT32, number=2,)
    cause = proto.Field(proto.MESSAGE, number=3, message=status_pb2.Status,)
    resume_token = proto.Field(proto.BYTES, number=4,)
    read_time = proto.Field(proto.MESSAGE, number=6, message=timestamp_pb2.Timestamp,)


class ListCollectionIdsRequest(proto.Message):

    r"""The request for