# 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):


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.protobuf import timestamp_pb2  # type: ignore
            is set and the document on the server has fields not covered
            by the mask, they are left unchanged. Fields referenced in
            the mask, but not present in the input document, are deleted
            from the document on the server. The field paths in this
            mask must not contain a reserved field name.
        update_transforms (Sequence[google.cloud.firestore_v1.types.DocumentTransform.FieldTransform]):
            The transforms to perform after update.

            This field can be set only when the operation is ``update``.
            If present, this write is equivalent to performing
            ``update`` and ``transform`` to the same document atomically
            and in order.
        current_document (google.cloud.firestore_v1.types.Precondition):
            An optional precondition on the document.
            The write will fail if this is set and not met
            by the target document.
    """

    update = proto.Field(
        proto.MESSAGE, number=1, oneof="operation", message=gf_document.Document,
    )
    delete = proto.Field(proto.STRING, number=2, oneof="operation",)
    transform = proto.Field(
        proto.MESSAGE, number=6, oneof="operation", message="DocumentTransform",
    )
    update_mask = proto.Field(proto.MESSAGE, number=3, message=common.DocumentMask,)
    update_transforms = proto.RepeatedField(
        proto.MESSAGE, number=7, message="DocumentTransform.FieldTransform",
    )
    current_document = proto.Field(

# 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/write.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.protobuf import timestamp_pb2  # type: ignore

            is set and the document on the server has fields not covered
            by the mask, they are left unchanged. Fields referenced in
            the mask, but not present in the input document, are deleted
            from the document on the server. The field paths in this
            mask must not contain a reserved field name.
        update_transforms (Sequence[google.cloud.firestore_v1.types.DocumentTransform.FieldTransform]):
            The transforms to perform after update.

            This field can be set only when the operation is ``update``.
            If present, this write is equivalent to performing
            ``update`` and ``transform`` to the same document atomically
            and in order.
        current_document (google.cloud.firestore_v1.types.Precondition):
            An optional precondition on the document.
            The write will fail if this is set and not met
            by the target document.
    """

    update = proto.Field(
        proto.MESSAGE, number=1, oneof="operation", message=gf_document.Document,
    )
    delete = proto.Field(proto.STRING, number=2, oneof="operation",)
    transform = proto.Field(
        proto.MESSAGE, number=6, oneof="operation", message="DocumentTransform",
    )
    update_mask = proto.Field(proto.MESSAGE, number=3, message=common.DocumentMask,)
    update_transforms = proto.RepeatedField(
        proto.MESSAGE, number=7, message="DocumentTransform.FieldTransform",
    )
    current_document = proto.Field(

        proto.MESSAGE, number=4, message=common.Precondition,