/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: google/firestore/v1/firestore.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../../api/annotations";
import * as dependency_2 from "./../../api/client";
import * as dependency_3 from "./../../api/field_behavior";
import * as dependency_4 from "./aggregation_result";
import * as dependency_5 from "./common";
import * as dependency_6 from "./document";
import * as dependency_7 from "./query";
import * as dependency_8 from "./query_profile";
import * as dependency_9 from "./write";
import * as dependency_10 from "./../../protobuf/empty";
import * as dependency_11 from "./../../protobuf/timestamp";
import * as dependency_12 from "./../../protobuf/wrappers";
import * as dependency_13 from "./../../rpc/status";
import * as pb_1 from "google-protobuf";
import * as grpc_1 from "@grpc/grpc-js";
export class GetDocumentRequest extends pb_1.Message {
    #one_of_decls: number[][] = [[3, 5]];
    constructor(data?: any[] | ({
        name?: string;
        mask?: dependency_5.DocumentMask;
    } & (({
        transaction?: Uint8Array;
        read_time?: never;
    } | {
        transaction?: never;
        read_time?: dependency_11.Timestamp;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
            if ("mask" in data && data.mask != undefined) {
                this.mask = data.mask;
            }
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get mask() {
        return pb_1.Message.getWrapperField(this, dependency_5.DocumentMask, 2) as dependency_5.DocumentMask;
    }
    set mask(value: dependency_5.DocumentMask) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_mask() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setOneofField(this, 3, this.#one_of_decls[0], value);
    }
    get has_transaction() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 5) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setOneofWrapperField(this, 5, this.#one_of_decls[0], value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get consistency_selector() {
        const cases: {
            [index: number]: "none" | "transaction" | "read_time";
        } = {
            0: "none",
            3: "transaction",
            5: "read_time"
        };
        return cases[pb_1.Message.computeOneofCase(this, [3, 5])];
    }
    static fromObject(data: {
        name?: string;
        mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
        transaction?: Uint8Array;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
    }): GetDocumentRequest {
        const message = new GetDocumentRequest({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.mask != null) {
            message.mask = dependency_5.DocumentMask.fromObject(data.mask);
        }
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
            transaction?: Uint8Array;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.mask != null) {
            data.mask = this.mask.toObject();
        }
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(1, this.name);
        if (this.has_mask)
            writer.writeMessage(2, this.mask, () => this.mask.serialize(writer));
        if (this.has_transaction)
            writer.writeBytes(3, this.transaction);
        if (this.has_read_time)
            writer.writeMessage(5, this.read_time, () => this.read_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): GetDocumentRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new GetDocumentRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.mask, () => message.mask = dependency_5.DocumentMask.deserialize(reader));
                    break;
                case 3:
                    message.transaction = reader.readBytes();
                    break;
                case 5:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): GetDocumentRequest {
        return GetDocumentRequest.deserialize(bytes);
    }
}
export class ListDocumentsRequest extends pb_1.Message {
    #one_of_decls: number[][] = [[8, 10]];
    constructor(data?: any[] | ({
        parent?: string;
        collection_id?: string;
        page_size?: number;
        page_token?: string;
        order_by?: string;
        mask?: dependency_5.DocumentMask;
        show_missing?: boolean;
    } & (({
        transaction?: Uint8Array;
        read_time?: never;
    } | {
        transaction?: never;
        read_time?: dependency_11.Timestamp;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("parent" in data && data.parent != undefined) {
                this.parent = data.parent;
            }
            if ("collection_id" in data && data.collection_id != undefined) {
                this.collection_id = data.collection_id;
            }
            if ("page_size" in data && data.page_size != undefined) {
                this.page_size = data.page_size;
            }
            if ("page_token" in data && data.page_token != undefined) {
                this.page_token = data.page_token;
            }
            if ("order_by" in data && data.order_by != undefined) {
                this.order_by = data.order_by;
            }
            if ("mask" in data && data.mask != undefined) {
                this.mask = data.mask;
            }
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
            if ("show_missing" in data && data.show_missing != undefined) {
                this.show_missing = data.show_missing;
            }
        }
    }
    get parent() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set parent(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get collection_id() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set collection_id(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get page_size() {
        return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
    }
    set page_size(value: number) {
        pb_1.Message.setField(this, 3, value);
    }
    get page_token() {
        return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
    }
    set page_token(value: string) {
        pb_1.Message.setField(this, 4, value);
    }
    get order_by() {
        return pb_1.Message.getFieldWithDefault(this, 6, "") as string;
    }
    set order_by(value: string) {
        pb_1.Message.setField(this, 6, value);
    }
    get mask() {
        return pb_1.Message.getWrapperField(this, dependency_5.DocumentMask, 7) as dependency_5.DocumentMask;
    }
    set mask(value: dependency_5.DocumentMask) {
        pb_1.Message.setWrapperField(this, 7, value);
    }
    get has_mask() {
        return pb_1.Message.getField(this, 7) != null;
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 8, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setOneofField(this, 8, this.#one_of_decls[0], value);
    }
    get has_transaction() {
        return pb_1.Message.getField(this, 8) != null;
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 10) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setOneofWrapperField(this, 10, this.#one_of_decls[0], value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 10) != null;
    }
    get show_missing() {
        return pb_1.Message.getFieldWithDefault(this, 12, false) as boolean;
    }
    set show_missing(value: boolean) {
        pb_1.Message.setField(this, 12, value);
    }
    get consistency_selector() {
        const cases: {
            [index: number]: "none" | "transaction" | "read_time";
        } = {
            0: "none",
            8: "transaction",
            10: "read_time"
        };
        return cases[pb_1.Message.computeOneofCase(this, [8, 10])];
    }
    static fromObject(data: {
        parent?: string;
        collection_id?: string;
        page_size?: number;
        page_token?: string;
        order_by?: string;
        mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
        transaction?: Uint8Array;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        show_missing?: boolean;
    }): ListDocumentsRequest {
        const message = new ListDocumentsRequest({});
        if (data.parent != null) {
            message.parent = data.parent;
        }
        if (data.collection_id != null) {
            message.collection_id = data.collection_id;
        }
        if (data.page_size != null) {
            message.page_size = data.page_size;
        }
        if (data.page_token != null) {
            message.page_token = data.page_token;
        }
        if (data.order_by != null) {
            message.order_by = data.order_by;
        }
        if (data.mask != null) {
            message.mask = dependency_5.DocumentMask.fromObject(data.mask);
        }
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        if (data.show_missing != null) {
            message.show_missing = data.show_missing;
        }
        return message;
    }
    toObject() {
        const data: {
            parent?: string;
            collection_id?: string;
            page_size?: number;
            page_token?: string;
            order_by?: string;
            mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
            transaction?: Uint8Array;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
            show_missing?: boolean;
        } = {};
        if (this.parent != null) {
            data.parent = this.parent;
        }
        if (this.collection_id != null) {
            data.collection_id = this.collection_id;
        }
        if (this.page_size != null) {
            data.page_size = this.page_size;
        }
        if (this.page_token != null) {
            data.page_token = this.page_token;
        }
        if (this.order_by != null) {
            data.order_by = this.order_by;
        }
        if (this.mask != null) {
            data.mask = this.mask.toObject();
        }
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        if (this.show_missing != null) {
            data.show_missing = this.show_missing;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.parent.length)
            writer.writeString(1, this.parent);
        if (this.collection_id.length)
            writer.writeString(2, this.collection_id);
        if (this.page_size != 0)
            writer.writeInt32(3, this.page_size);
        if (this.page_token.length)
            writer.writeString(4, this.page_token);
        if (this.order_by.length)
            writer.writeString(6, this.order_by);
        if (this.has_mask)
            writer.writeMessage(7, this.mask, () => this.mask.serialize(writer));
        if (this.has_transaction)
            writer.writeBytes(8, this.transaction);
        if (this.has_read_time)
            writer.writeMessage(10, this.read_time, () => this.read_time.serialize(writer));
        if (this.show_missing != false)
            writer.writeBool(12, this.show_missing);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ListDocumentsRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ListDocumentsRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.parent = reader.readString();
                    break;
                case 2:
                    message.collection_id = reader.readString();
                    break;
                case 3:
                    message.page_size = reader.readInt32();
                    break;
                case 4:
                    message.page_token = reader.readString();
                    break;
                case 6:
                    message.order_by = reader.readString();
                    break;
                case 7:
                    reader.readMessage(message.mask, () => message.mask = dependency_5.DocumentMask.deserialize(reader));
                    break;
                case 8:
                    message.transaction = reader.readBytes();
                    break;
                case 10:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                case 12:
                    message.show_missing = reader.readBool();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ListDocumentsRequest {
        return ListDocumentsRequest.deserialize(bytes);
    }
}
export class ListDocumentsResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        documents?: dependency_6.Document[];
        next_page_token?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("documents" in data && data.documents != undefined) {
                this.documents = data.documents;
            }
            if ("next_page_token" in data && data.next_page_token != undefined) {
                this.next_page_token = data.next_page_token;
            }
        }
    }
    get documents() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_6.Document, 1) as dependency_6.Document[];
    }
    set documents(value: dependency_6.Document[]) {
        pb_1.Message.setRepeatedWrapperField(this, 1, value);
    }
    get next_page_token() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set next_page_token(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        documents?: ReturnType<typeof dependency_6.Document.prototype.toObject>[];
        next_page_token?: string;
    }): ListDocumentsResponse {
        const message = new ListDocumentsResponse({});
        if (data.documents != null) {
            message.documents = data.documents.map(item => dependency_6.Document.fromObject(item));
        }
        if (data.next_page_token != null) {
            message.next_page_token = data.next_page_token;
        }
        return message;
    }
    toObject() {
        const data: {
            documents?: ReturnType<typeof dependency_6.Document.prototype.toObject>[];
            next_page_token?: string;
        } = {};
        if (this.documents != null) {
            data.documents = this.documents.map((item: dependency_6.Document) => item.toObject());
        }
        if (this.next_page_token != null) {
            data.next_page_token = this.next_page_token;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.documents.length)
            writer.writeRepeatedMessage(1, this.documents, (item: dependency_6.Document) => item.serialize(writer));
        if (this.next_page_token.length)
            writer.writeString(2, this.next_page_token);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ListDocumentsResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ListDocumentsResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.documents, () => pb_1.Message.addToRepeatedWrapperField(message, 1, dependency_6.Document.deserialize(reader), dependency_6.Document));
                    break;
                case 2:
                    message.next_page_token = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ListDocumentsResponse {
        return ListDocumentsResponse.deserialize(bytes);
    }
}
export class CreateDocumentRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        parent?: string;
        collection_id?: string;
        document_id?: string;
        document?: dependency_6.Document;
        mask?: dependency_5.DocumentMask;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("parent" in data && data.parent != undefined) {
                this.parent = data.parent;
            }
            if ("collection_id" in data && data.collection_id != undefined) {
                this.collection_id = data.collection_id;
            }
            if ("document_id" in data && data.document_id != undefined) {
                this.document_id = data.document_id;
            }
            if ("document" in data && data.document != undefined) {
                this.document = data.document;
            }
            if ("mask" in data && data.mask != undefined) {
                this.mask = data.mask;
            }
        }
    }
    get parent() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set parent(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get collection_id() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set collection_id(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get document_id() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set document_id(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get document() {
        return pb_1.Message.getWrapperField(this, dependency_6.Document, 4) as dependency_6.Document;
    }
    set document(value: dependency_6.Document) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_document() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get mask() {
        return pb_1.Message.getWrapperField(this, dependency_5.DocumentMask, 5) as dependency_5.DocumentMask;
    }
    set mask(value: dependency_5.DocumentMask) {
        pb_1.Message.setWrapperField(this, 5, value);
    }
    get has_mask() {
        return pb_1.Message.getField(this, 5) != null;
    }
    static fromObject(data: {
        parent?: string;
        collection_id?: string;
        document_id?: string;
        document?: ReturnType<typeof dependency_6.Document.prototype.toObject>;
        mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
    }): CreateDocumentRequest {
        const message = new CreateDocumentRequest({});
        if (data.parent != null) {
            message.parent = data.parent;
        }
        if (data.collection_id != null) {
            message.collection_id = data.collection_id;
        }
        if (data.document_id != null) {
            message.document_id = data.document_id;
        }
        if (data.document != null) {
            message.document = dependency_6.Document.fromObject(data.document);
        }
        if (data.mask != null) {
            message.mask = dependency_5.DocumentMask.fromObject(data.mask);
        }
        return message;
    }
    toObject() {
        const data: {
            parent?: string;
            collection_id?: string;
            document_id?: string;
            document?: ReturnType<typeof dependency_6.Document.prototype.toObject>;
            mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
        } = {};
        if (this.parent != null) {
            data.parent = this.parent;
        }
        if (this.collection_id != null) {
            data.collection_id = this.collection_id;
        }
        if (this.document_id != null) {
            data.document_id = this.document_id;
        }
        if (this.document != null) {
            data.document = this.document.toObject();
        }
        if (this.mask != null) {
            data.mask = this.mask.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.parent.length)
            writer.writeString(1, this.parent);
        if (this.collection_id.length)
            writer.writeString(2, this.collection_id);
        if (this.document_id.length)
            writer.writeString(3, this.document_id);
        if (this.has_document)
            writer.writeMessage(4, this.document, () => this.document.serialize(writer));
        if (this.has_mask)
            writer.writeMessage(5, this.mask, () => this.mask.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): CreateDocumentRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new CreateDocumentRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.parent = reader.readString();
                    break;
                case 2:
                    message.collection_id = reader.readString();
                    break;
                case 3:
                    message.document_id = reader.readString();
                    break;
                case 4:
                    reader.readMessage(message.document, () => message.document = dependency_6.Document.deserialize(reader));
                    break;
                case 5:
                    reader.readMessage(message.mask, () => message.mask = dependency_5.DocumentMask.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): CreateDocumentRequest {
        return CreateDocumentRequest.deserialize(bytes);
    }
}
export class UpdateDocumentRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        document?: dependency_6.Document;
        update_mask?: dependency_5.DocumentMask;
        mask?: dependency_5.DocumentMask;
        current_document?: dependency_5.Precondition;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("document" in data && data.document != undefined) {
                this.document = data.document;
            }
            if ("update_mask" in data && data.update_mask != undefined) {
                this.update_mask = data.update_mask;
            }
            if ("mask" in data && data.mask != undefined) {
                this.mask = data.mask;
            }
            if ("current_document" in data && data.current_document != undefined) {
                this.current_document = data.current_document;
            }
        }
    }
    get document() {
        return pb_1.Message.getWrapperField(this, dependency_6.Document, 1) as dependency_6.Document;
    }
    set document(value: dependency_6.Document) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_document() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get update_mask() {
        return pb_1.Message.getWrapperField(this, dependency_5.DocumentMask, 2) as dependency_5.DocumentMask;
    }
    set update_mask(value: dependency_5.DocumentMask) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_update_mask() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get mask() {
        return pb_1.Message.getWrapperField(this, dependency_5.DocumentMask, 3) as dependency_5.DocumentMask;
    }
    set mask(value: dependency_5.DocumentMask) {
        pb_1.Message.setWrapperField(this, 3, value);
    }
    get has_mask() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get current_document() {
        return pb_1.Message.getWrapperField(this, dependency_5.Precondition, 4) as dependency_5.Precondition;
    }
    set current_document(value: dependency_5.Precondition) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_current_document() {
        return pb_1.Message.getField(this, 4) != null;
    }
    static fromObject(data: {
        document?: ReturnType<typeof dependency_6.Document.prototype.toObject>;
        update_mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
        mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
        current_document?: ReturnType<typeof dependency_5.Precondition.prototype.toObject>;
    }): UpdateDocumentRequest {
        const message = new UpdateDocumentRequest({});
        if (data.document != null) {
            message.document = dependency_6.Document.fromObject(data.document);
        }
        if (data.update_mask != null) {
            message.update_mask = dependency_5.DocumentMask.fromObject(data.update_mask);
        }
        if (data.mask != null) {
            message.mask = dependency_5.DocumentMask.fromObject(data.mask);
        }
        if (data.current_document != null) {
            message.current_document = dependency_5.Precondition.fromObject(data.current_document);
        }
        return message;
    }
    toObject() {
        const data: {
            document?: ReturnType<typeof dependency_6.Document.prototype.toObject>;
            update_mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
            mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
            current_document?: ReturnType<typeof dependency_5.Precondition.prototype.toObject>;
        } = {};
        if (this.document != null) {
            data.document = this.document.toObject();
        }
        if (this.update_mask != null) {
            data.update_mask = this.update_mask.toObject();
        }
        if (this.mask != null) {
            data.mask = this.mask.toObject();
        }
        if (this.current_document != null) {
            data.current_document = this.current_document.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.has_document)
            writer.writeMessage(1, this.document, () => this.document.serialize(writer));
        if (this.has_update_mask)
            writer.writeMessage(2, this.update_mask, () => this.update_mask.serialize(writer));
        if (this.has_mask)
            writer.writeMessage(3, this.mask, () => this.mask.serialize(writer));
        if (this.has_current_document)
            writer.writeMessage(4, this.current_document, () => this.current_document.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): UpdateDocumentRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new UpdateDocumentRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.document, () => message.document = dependency_6.Document.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.update_mask, () => message.update_mask = dependency_5.DocumentMask.deserialize(reader));
                    break;
                case 3:
                    reader.readMessage(message.mask, () => message.mask = dependency_5.DocumentMask.deserialize(reader));
                    break;
                case 4:
                    reader.readMessage(message.current_document, () => message.current_document = dependency_5.Precondition.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): UpdateDocumentRequest {
        return UpdateDocumentRequest.deserialize(bytes);
    }
}
export class DeleteDocumentRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
        current_document?: dependency_5.Precondition;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("name" in data && data.name != undefined) {
                this.name = data.name;
            }
            if ("current_document" in data && data.current_document != undefined) {
                this.current_document = data.current_document;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get current_document() {
        return pb_1.Message.getWrapperField(this, dependency_5.Precondition, 2) as dependency_5.Precondition;
    }
    set current_document(value: dependency_5.Precondition) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_current_document() {
        return pb_1.Message.getField(this, 2) != null;
    }
    static fromObject(data: {
        name?: string;
        current_document?: ReturnType<typeof dependency_5.Precondition.prototype.toObject>;
    }): DeleteDocumentRequest {
        const message = new DeleteDocumentRequest({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.current_document != null) {
            message.current_document = dependency_5.Precondition.fromObject(data.current_document);
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            current_document?: ReturnType<typeof dependency_5.Precondition.prototype.toObject>;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.current_document != null) {
            data.current_document = this.current_document.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.name.length)
            writer.writeString(1, this.name);
        if (this.has_current_document)
            writer.writeMessage(2, this.current_document, () => this.current_document.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DeleteDocumentRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DeleteDocumentRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.current_document, () => message.current_document = dependency_5.Precondition.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DeleteDocumentRequest {
        return DeleteDocumentRequest.deserialize(bytes);
    }
}
export class BatchGetDocumentsRequest extends pb_1.Message {
    #one_of_decls: number[][] = [[4, 5, 7]];
    constructor(data?: any[] | ({
        database?: string;
        documents?: string[];
        mask?: dependency_5.DocumentMask;
    } & (({
        transaction?: Uint8Array;
        new_transaction?: never;
        read_time?: never;
    } | {
        transaction?: never;
        new_transaction?: dependency_5.TransactionOptions;
        read_time?: never;
    } | {
        transaction?: never;
        new_transaction?: never;
        read_time?: dependency_11.Timestamp;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("database" in data && data.database != undefined) {
                this.database = data.database;
            }
            if ("documents" in data && data.documents != undefined) {
                this.documents = data.documents;
            }
            if ("mask" in data && data.mask != undefined) {
                this.mask = data.mask;
            }
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
            if ("new_transaction" in data && data.new_transaction != undefined) {
                this.new_transaction = data.new_transaction;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
        }
    }
    get database() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set database(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get documents() {
        return pb_1.Message.getFieldWithDefault(this, 2, []) as string[];
    }
    set documents(value: string[]) {
        pb_1.Message.setField(this, 2, value);
    }
    get mask() {
        return pb_1.Message.getWrapperField(this, dependency_5.DocumentMask, 3) as dependency_5.DocumentMask;
    }
    set mask(value: dependency_5.DocumentMask) {
        pb_1.Message.setWrapperField(this, 3, value);
    }
    get has_mask() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setOneofField(this, 4, this.#one_of_decls[0], value);
    }
    get has_transaction() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get new_transaction() {
        return pb_1.Message.getWrapperField(this, dependency_5.TransactionOptions, 5) as dependency_5.TransactionOptions;
    }
    set new_transaction(value: dependency_5.TransactionOptions) {
        pb_1.Message.setOneofWrapperField(this, 5, this.#one_of_decls[0], value);
    }
    get has_new_transaction() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 7) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setOneofWrapperField(this, 7, this.#one_of_decls[0], value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 7) != null;
    }
    get consistency_selector() {
        const cases: {
            [index: number]: "none" | "transaction" | "new_transaction" | "read_time";
        } = {
            0: "none",
            4: "transaction",
            5: "new_transaction",
            7: "read_time"
        };
        return cases[pb_1.Message.computeOneofCase(this, [4, 5, 7])];
    }
    static fromObject(data: {
        database?: string;
        documents?: string[];
        mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
        transaction?: Uint8Array;
        new_transaction?: ReturnType<typeof dependency_5.TransactionOptions.prototype.toObject>;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
    }): BatchGetDocumentsRequest {
        const message = new BatchGetDocumentsRequest({});
        if (data.database != null) {
            message.database = data.database;
        }
        if (data.documents != null) {
            message.documents = data.documents;
        }
        if (data.mask != null) {
            message.mask = dependency_5.DocumentMask.fromObject(data.mask);
        }
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        if (data.new_transaction != null) {
            message.new_transaction = dependency_5.TransactionOptions.fromObject(data.new_transaction);
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        return message;
    }
    toObject() {
        const data: {
            database?: string;
            documents?: string[];
            mask?: ReturnType<typeof dependency_5.DocumentMask.prototype.toObject>;
            transaction?: Uint8Array;
            new_transaction?: ReturnType<typeof dependency_5.TransactionOptions.prototype.toObject>;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        } = {};
        if (this.database != null) {
            data.database = this.database;
        }
        if (this.documents != null) {
            data.documents = this.documents;
        }
        if (this.mask != null) {
            data.mask = this.mask.toObject();
        }
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        if (this.new_transaction != null) {
            data.new_transaction = this.new_transaction.toObject();
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.database.length)
            writer.writeString(1, this.database);
        if (this.documents.length)
            writer.writeRepeatedString(2, this.documents);
        if (this.has_mask)
            writer.writeMessage(3, this.mask, () => this.mask.serialize(writer));
        if (this.has_transaction)
            writer.writeBytes(4, this.transaction);
        if (this.has_new_transaction)
            writer.writeMessage(5, this.new_transaction, () => this.new_transaction.serialize(writer));
        if (this.has_read_time)
            writer.writeMessage(7, this.read_time, () => this.read_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BatchGetDocumentsRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BatchGetDocumentsRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.database = reader.readString();
                    break;
                case 2:
                    pb_1.Message.addToRepeatedField(message, 2, reader.readString());
                    break;
                case 3:
                    reader.readMessage(message.mask, () => message.mask = dependency_5.DocumentMask.deserialize(reader));
                    break;
                case 4:
                    message.transaction = reader.readBytes();
                    break;
                case 5:
                    reader.readMessage(message.new_transaction, () => message.new_transaction = dependency_5.TransactionOptions.deserialize(reader));
                    break;
                case 7:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BatchGetDocumentsRequest {
        return BatchGetDocumentsRequest.deserialize(bytes);
    }
}
export class BatchGetDocumentsResponse extends pb_1.Message {
    #one_of_decls: number[][] = [[1, 2]];
    constructor(data?: any[] | ({
        transaction?: Uint8Array;
        read_time?: dependency_11.Timestamp;
    } & (({
        found?: dependency_6.Document;
        missing?: never;
    } | {
        found?: never;
        missing?: string;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("found" in data && data.found != undefined) {
                this.found = data.found;
            }
            if ("missing" in data && data.missing != undefined) {
                this.missing = data.missing;
            }
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
        }
    }
    get found() {
        return pb_1.Message.getWrapperField(this, dependency_6.Document, 1) as dependency_6.Document;
    }
    set found(value: dependency_6.Document) {
        pb_1.Message.setOneofWrapperField(this, 1, this.#one_of_decls[0], value);
    }
    get has_found() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get missing() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set missing(value: string) {
        pb_1.Message.setOneofField(this, 2, this.#one_of_decls[0], value);
    }
    get has_missing() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setField(this, 3, value);
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 4) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get result() {
        const cases: {
            [index: number]: "none" | "found" | "missing";
        } = {
            0: "none",
            1: "found",
            2: "missing"
        };
        return cases[pb_1.Message.computeOneofCase(this, [1, 2])];
    }
    static fromObject(data: {
        found?: ReturnType<typeof dependency_6.Document.prototype.toObject>;
        missing?: string;
        transaction?: Uint8Array;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
    }): BatchGetDocumentsResponse {
        const message = new BatchGetDocumentsResponse({});
        if (data.found != null) {
            message.found = dependency_6.Document.fromObject(data.found);
        }
        if (data.missing != null) {
            message.missing = data.missing;
        }
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        return message;
    }
    toObject() {
        const data: {
            found?: ReturnType<typeof dependency_6.Document.prototype.toObject>;
            missing?: string;
            transaction?: Uint8Array;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        } = {};
        if (this.found != null) {
            data.found = this.found.toObject();
        }
        if (this.missing != null) {
            data.missing = this.missing;
        }
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.has_found)
            writer.writeMessage(1, this.found, () => this.found.serialize(writer));
        if (this.has_missing)
            writer.writeString(2, this.missing);
        if (this.transaction.length)
            writer.writeBytes(3, this.transaction);
        if (this.has_read_time)
            writer.writeMessage(4, this.read_time, () => this.read_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BatchGetDocumentsResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BatchGetDocumentsResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.found, () => message.found = dependency_6.Document.deserialize(reader));
                    break;
                case 2:
                    message.missing = reader.readString();
                    break;
                case 3:
                    message.transaction = reader.readBytes();
                    break;
                case 4:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BatchGetDocumentsResponse {
        return BatchGetDocumentsResponse.deserialize(bytes);
    }
}
export class BeginTransactionRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        database?: string;
        options?: dependency_5.TransactionOptions;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("database" in data && data.database != undefined) {
                this.database = data.database;
            }
            if ("options" in data && data.options != undefined) {
                this.options = data.options;
            }
        }
    }
    get database() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set database(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get options() {
        return pb_1.Message.getWrapperField(this, dependency_5.TransactionOptions, 2) as dependency_5.TransactionOptions;
    }
    set options(value: dependency_5.TransactionOptions) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_options() {
        return pb_1.Message.getField(this, 2) != null;
    }
    static fromObject(data: {
        database?: string;
        options?: ReturnType<typeof dependency_5.TransactionOptions.prototype.toObject>;
    }): BeginTransactionRequest {
        const message = new BeginTransactionRequest({});
        if (data.database != null) {
            message.database = data.database;
        }
        if (data.options != null) {
            message.options = dependency_5.TransactionOptions.fromObject(data.options);
        }
        return message;
    }
    toObject() {
        const data: {
            database?: string;
            options?: ReturnType<typeof dependency_5.TransactionOptions.prototype.toObject>;
        } = {};
        if (this.database != null) {
            data.database = this.database;
        }
        if (this.options != null) {
            data.options = this.options.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.database.length)
            writer.writeString(1, this.database);
        if (this.has_options)
            writer.writeMessage(2, this.options, () => this.options.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BeginTransactionRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BeginTransactionRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.database = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.options, () => message.options = dependency_5.TransactionOptions.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BeginTransactionRequest {
        return BeginTransactionRequest.deserialize(bytes);
    }
}
export class BeginTransactionResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        transaction?: Uint8Array;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
        }
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 1, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setField(this, 1, value);
    }
    static fromObject(data: {
        transaction?: Uint8Array;
    }): BeginTransactionResponse {
        const message = new BeginTransactionResponse({});
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        return message;
    }
    toObject() {
        const data: {
            transaction?: Uint8Array;
        } = {};
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.transaction.length)
            writer.writeBytes(1, this.transaction);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BeginTransactionResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BeginTransactionResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.transaction = reader.readBytes();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BeginTransactionResponse {
        return BeginTransactionResponse.deserialize(bytes);
    }
}
export class CommitRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        database?: string;
        writes?: dependency_9.Write[];
        transaction?: Uint8Array;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("database" in data && data.database != undefined) {
                this.database = data.database;
            }
            if ("writes" in data && data.writes != undefined) {
                this.writes = data.writes;
            }
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
        }
    }
    get database() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set database(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get writes() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_9.Write, 2) as dependency_9.Write[];
    }
    set writes(value: dependency_9.Write[]) {
        pb_1.Message.setRepeatedWrapperField(this, 2, value);
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 3, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setField(this, 3, value);
    }
    static fromObject(data: {
        database?: string;
        writes?: ReturnType<typeof dependency_9.Write.prototype.toObject>[];
        transaction?: Uint8Array;
    }): CommitRequest {
        const message = new CommitRequest({});
        if (data.database != null) {
            message.database = data.database;
        }
        if (data.writes != null) {
            message.writes = data.writes.map(item => dependency_9.Write.fromObject(item));
        }
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        return message;
    }
    toObject() {
        const data: {
            database?: string;
            writes?: ReturnType<typeof dependency_9.Write.prototype.toObject>[];
            transaction?: Uint8Array;
        } = {};
        if (this.database != null) {
            data.database = this.database;
        }
        if (this.writes != null) {
            data.writes = this.writes.map((item: dependency_9.Write) => item.toObject());
        }
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.database.length)
            writer.writeString(1, this.database);
        if (this.writes.length)
            writer.writeRepeatedMessage(2, this.writes, (item: dependency_9.Write) => item.serialize(writer));
        if (this.transaction.length)
            writer.writeBytes(3, this.transaction);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): CommitRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new CommitRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.database = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.writes, () => pb_1.Message.addToRepeatedWrapperField(message, 2, dependency_9.Write.deserialize(reader), dependency_9.Write));
                    break;
                case 3:
                    message.transaction = reader.readBytes();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): CommitRequest {
        return CommitRequest.deserialize(bytes);
    }
}
export class CommitResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        write_results?: dependency_9.WriteResult[];
        commit_time?: dependency_11.Timestamp;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("write_results" in data && data.write_results != undefined) {
                this.write_results = data.write_results;
            }
            if ("commit_time" in data && data.commit_time != undefined) {
                this.commit_time = data.commit_time;
            }
        }
    }
    get write_results() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_9.WriteResult, 1) as dependency_9.WriteResult[];
    }
    set write_results(value: dependency_9.WriteResult[]) {
        pb_1.Message.setRepeatedWrapperField(this, 1, value);
    }
    get commit_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 2) as dependency_11.Timestamp;
    }
    set commit_time(value: dependency_11.Timestamp) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_commit_time() {
        return pb_1.Message.getField(this, 2) != null;
    }
    static fromObject(data: {
        write_results?: ReturnType<typeof dependency_9.WriteResult.prototype.toObject>[];
        commit_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
    }): CommitResponse {
        const message = new CommitResponse({});
        if (data.write_results != null) {
            message.write_results = data.write_results.map(item => dependency_9.WriteResult.fromObject(item));
        }
        if (data.commit_time != null) {
            message.commit_time = dependency_11.Timestamp.fromObject(data.commit_time);
        }
        return message;
    }
    toObject() {
        const data: {
            write_results?: ReturnType<typeof dependency_9.WriteResult.prototype.toObject>[];
            commit_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        } = {};
        if (this.write_results != null) {
            data.write_results = this.write_results.map((item: dependency_9.WriteResult) => item.toObject());
        }
        if (this.commit_time != null) {
            data.commit_time = this.commit_time.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.write_results.length)
            writer.writeRepeatedMessage(1, this.write_results, (item: dependency_9.WriteResult) => item.serialize(writer));
        if (this.has_commit_time)
            writer.writeMessage(2, this.commit_time, () => this.commit_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): CommitResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new CommitResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.write_results, () => pb_1.Message.addToRepeatedWrapperField(message, 1, dependency_9.WriteResult.deserialize(reader), dependency_9.WriteResult));
                    break;
                case 2:
                    reader.readMessage(message.commit_time, () => message.commit_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): CommitResponse {
        return CommitResponse.deserialize(bytes);
    }
}
export class RollbackRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        database?: string;
        transaction?: Uint8Array;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("database" in data && data.database != undefined) {
                this.database = data.database;
            }
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
        }
    }
    get database() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set database(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        database?: string;
        transaction?: Uint8Array;
    }): RollbackRequest {
        const message = new RollbackRequest({});
        if (data.database != null) {
            message.database = data.database;
        }
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        return message;
    }
    toObject() {
        const data: {
            database?: string;
            transaction?: Uint8Array;
        } = {};
        if (this.database != null) {
            data.database = this.database;
        }
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.database.length)
            writer.writeString(1, this.database);
        if (this.transaction.length)
            writer.writeBytes(2, this.transaction);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RollbackRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RollbackRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.database = reader.readString();
                    break;
                case 2:
                    message.transaction = reader.readBytes();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): RollbackRequest {
        return RollbackRequest.deserialize(bytes);
    }
}
export class RunQueryRequest extends pb_1.Message {
    #one_of_decls: number[][] = [[2], [5, 6, 7]];
    constructor(data?: any[] | ({
        parent?: string;
        explain_options?: dependency_8.ExplainOptions;
    } & (({
        structured_query?: dependency_7.StructuredQuery;
    }) | ({
        transaction?: Uint8Array;
        new_transaction?: never;
        read_time?: never;
    } | {
        transaction?: never;
        new_transaction?: dependency_5.TransactionOptions;
        read_time?: never;
    } | {
        transaction?: never;
        new_transaction?: never;
        read_time?: dependency_11.Timestamp;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("parent" in data && data.parent != undefined) {
                this.parent = data.parent;
            }
            if ("structured_query" in data && data.structured_query != undefined) {
                this.structured_query = data.structured_query;
            }
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
            if ("new_transaction" in data && data.new_transaction != undefined) {
                this.new_transaction = data.new_transaction;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
            if ("explain_options" in data && data.explain_options != undefined) {
                this.explain_options = data.explain_options;
            }
        }
    }
    get parent() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set parent(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get structured_query() {
        return pb_1.Message.getWrapperField(this, dependency_7.StructuredQuery, 2) as dependency_7.StructuredQuery;
    }
    set structured_query(value: dependency_7.StructuredQuery) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_structured_query() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 5, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setOneofField(this, 5, this.#one_of_decls[1], value);
    }
    get has_transaction() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get new_transaction() {
        return pb_1.Message.getWrapperField(this, dependency_5.TransactionOptions, 6) as dependency_5.TransactionOptions;
    }
    set new_transaction(value: dependency_5.TransactionOptions) {
        pb_1.Message.setOneofWrapperField(this, 6, this.#one_of_decls[1], value);
    }
    get has_new_transaction() {
        return pb_1.Message.getField(this, 6) != null;
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 7) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setOneofWrapperField(this, 7, this.#one_of_decls[1], value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 7) != null;
    }
    get explain_options() {
        return pb_1.Message.getWrapperField(this, dependency_8.ExplainOptions, 10) as dependency_8.ExplainOptions;
    }
    set explain_options(value: dependency_8.ExplainOptions) {
        pb_1.Message.setWrapperField(this, 10, value);
    }
    get has_explain_options() {
        return pb_1.Message.getField(this, 10) != null;
    }
    get query_type() {
        const cases: {
            [index: number]: "none" | "structured_query";
        } = {
            0: "none",
            2: "structured_query"
        };
        return cases[pb_1.Message.computeOneofCase(this, [2])];
    }
    get consistency_selector() {
        const cases: {
            [index: number]: "none" | "transaction" | "new_transaction" | "read_time";
        } = {
            0: "none",
            5: "transaction",
            6: "new_transaction",
            7: "read_time"
        };
        return cases[pb_1.Message.computeOneofCase(this, [5, 6, 7])];
    }
    static fromObject(data: {
        parent?: string;
        structured_query?: ReturnType<typeof dependency_7.StructuredQuery.prototype.toObject>;
        transaction?: Uint8Array;
        new_transaction?: ReturnType<typeof dependency_5.TransactionOptions.prototype.toObject>;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        explain_options?: ReturnType<typeof dependency_8.ExplainOptions.prototype.toObject>;
    }): RunQueryRequest {
        const message = new RunQueryRequest({});
        if (data.parent != null) {
            message.parent = data.parent;
        }
        if (data.structured_query != null) {
            message.structured_query = dependency_7.StructuredQuery.fromObject(data.structured_query);
        }
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        if (data.new_transaction != null) {
            message.new_transaction = dependency_5.TransactionOptions.fromObject(data.new_transaction);
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        if (data.explain_options != null) {
            message.explain_options = dependency_8.ExplainOptions.fromObject(data.explain_options);
        }
        return message;
    }
    toObject() {
        const data: {
            parent?: string;
            structured_query?: ReturnType<typeof dependency_7.StructuredQuery.prototype.toObject>;
            transaction?: Uint8Array;
            new_transaction?: ReturnType<typeof dependency_5.TransactionOptions.prototype.toObject>;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
            explain_options?: ReturnType<typeof dependency_8.ExplainOptions.prototype.toObject>;
        } = {};
        if (this.parent != null) {
            data.parent = this.parent;
        }
        if (this.structured_query != null) {
            data.structured_query = this.structured_query.toObject();
        }
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        if (this.new_transaction != null) {
            data.new_transaction = this.new_transaction.toObject();
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        if (this.explain_options != null) {
            data.explain_options = this.explain_options.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.parent.length)
            writer.writeString(1, this.parent);
        if (this.has_structured_query)
            writer.writeMessage(2, this.structured_query, () => this.structured_query.serialize(writer));
        if (this.has_transaction)
            writer.writeBytes(5, this.transaction);
        if (this.has_new_transaction)
            writer.writeMessage(6, this.new_transaction, () => this.new_transaction.serialize(writer));
        if (this.has_read_time)
            writer.writeMessage(7, this.read_time, () => this.read_time.serialize(writer));
        if (this.has_explain_options)
            writer.writeMessage(10, this.explain_options, () => this.explain_options.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RunQueryRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RunQueryRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.parent = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.structured_query, () => message.structured_query = dependency_7.StructuredQuery.deserialize(reader));
                    break;
                case 5:
                    message.transaction = reader.readBytes();
                    break;
                case 6:
                    reader.readMessage(message.new_transaction, () => message.new_transaction = dependency_5.TransactionOptions.deserialize(reader));
                    break;
                case 7:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                case 10:
                    reader.readMessage(message.explain_options, () => message.explain_options = dependency_8.ExplainOptions.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): RunQueryRequest {
        return RunQueryRequest.deserialize(bytes);
    }
}
export class RunQueryResponse extends pb_1.Message {
    #one_of_decls: number[][] = [[6]];
    constructor(data?: any[] | ({
        transaction?: Uint8Array;
        document?: dependency_6.Document;
        read_time?: dependency_11.Timestamp;
        skipped_results?: number;
        explain_metrics?: dependency_8.ExplainMetrics;
    } & (({
        done?: boolean;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
            if ("document" in data && data.document != undefined) {
                this.document = data.document;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
            if ("skipped_results" in data && data.skipped_results != undefined) {
                this.skipped_results = data.skipped_results;
            }
            if ("done" in data && data.done != undefined) {
                this.done = data.done;
            }
            if ("explain_metrics" in data && data.explain_metrics != undefined) {
                this.explain_metrics = data.explain_metrics;
            }
        }
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setField(this, 2, value);
    }
    get document() {
        return pb_1.Message.getWrapperField(this, dependency_6.Document, 1) as dependency_6.Document;
    }
    set document(value: dependency_6.Document) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_document() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 3) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setWrapperField(this, 3, value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get skipped_results() {
        return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
    }
    set skipped_results(value: number) {
        pb_1.Message.setField(this, 4, value);
    }
    get done() {
        return pb_1.Message.getFieldWithDefault(this, 6, false) as boolean;
    }
    set done(value: boolean) {
        pb_1.Message.setOneofField(this, 6, this.#one_of_decls[0], value);
    }
    get has_done() {
        return pb_1.Message.getField(this, 6) != null;
    }
    get explain_metrics() {
        return pb_1.Message.getWrapperField(this, dependency_8.ExplainMetrics, 11) as dependency_8.ExplainMetrics;
    }
    set explain_metrics(value: dependency_8.ExplainMetrics) {
        pb_1.Message.setWrapperField(this, 11, value);
    }
    get has_explain_metrics() {
        return pb_1.Message.getField(this, 11) != null;
    }
    get continuation_selector() {
        const cases: {
            [index: number]: "none" | "done";
        } = {
            0: "none",
            6: "done"
        };
        return cases[pb_1.Message.computeOneofCase(this, [6])];
    }
    static fromObject(data: {
        transaction?: Uint8Array;
        document?: ReturnType<typeof dependency_6.Document.prototype.toObject>;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        skipped_results?: number;
        done?: boolean;
        explain_metrics?: ReturnType<typeof dependency_8.ExplainMetrics.prototype.toObject>;
    }): RunQueryResponse {
        const message = new RunQueryResponse({});
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        if (data.document != null) {
            message.document = dependency_6.Document.fromObject(data.document);
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        if (data.skipped_results != null) {
            message.skipped_results = data.skipped_results;
        }
        if (data.done != null) {
            message.done = data.done;
        }
        if (data.explain_metrics != null) {
            message.explain_metrics = dependency_8.ExplainMetrics.fromObject(data.explain_metrics);
        }
        return message;
    }
    toObject() {
        const data: {
            transaction?: Uint8Array;
            document?: ReturnType<typeof dependency_6.Document.prototype.toObject>;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
            skipped_results?: number;
            done?: boolean;
            explain_metrics?: ReturnType<typeof dependency_8.ExplainMetrics.prototype.toObject>;
        } = {};
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        if (this.document != null) {
            data.document = this.document.toObject();
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        if (this.skipped_results != null) {
            data.skipped_results = this.skipped_results;
        }
        if (this.done != null) {
            data.done = this.done;
        }
        if (this.explain_metrics != null) {
            data.explain_metrics = this.explain_metrics.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.transaction.length)
            writer.writeBytes(2, this.transaction);
        if (this.has_document)
            writer.writeMessage(1, this.document, () => this.document.serialize(writer));
        if (this.has_read_time)
            writer.writeMessage(3, this.read_time, () => this.read_time.serialize(writer));
        if (this.skipped_results != 0)
            writer.writeInt32(4, this.skipped_results);
        if (this.has_done)
            writer.writeBool(6, this.done);
        if (this.has_explain_metrics)
            writer.writeMessage(11, this.explain_metrics, () => this.explain_metrics.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RunQueryResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RunQueryResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 2:
                    message.transaction = reader.readBytes();
                    break;
                case 1:
                    reader.readMessage(message.document, () => message.document = dependency_6.Document.deserialize(reader));
                    break;
                case 3:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                case 4:
                    message.skipped_results = reader.readInt32();
                    break;
                case 6:
                    message.done = reader.readBool();
                    break;
                case 11:
                    reader.readMessage(message.explain_metrics, () => message.explain_metrics = dependency_8.ExplainMetrics.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): RunQueryResponse {
        return RunQueryResponse.deserialize(bytes);
    }
}
export class RunAggregationQueryRequest extends pb_1.Message {
    #one_of_decls: number[][] = [[2], [4, 5, 6]];
    constructor(data?: any[] | ({
        parent?: string;
        explain_options?: dependency_8.ExplainOptions;
    } & (({
        structured_aggregation_query?: dependency_7.StructuredAggregationQuery;
    }) | ({
        transaction?: Uint8Array;
        new_transaction?: never;
        read_time?: never;
    } | {
        transaction?: never;
        new_transaction?: dependency_5.TransactionOptions;
        read_time?: never;
    } | {
        transaction?: never;
        new_transaction?: never;
        read_time?: dependency_11.Timestamp;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("parent" in data && data.parent != undefined) {
                this.parent = data.parent;
            }
            if ("structured_aggregation_query" in data && data.structured_aggregation_query != undefined) {
                this.structured_aggregation_query = data.structured_aggregation_query;
            }
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
            if ("new_transaction" in data && data.new_transaction != undefined) {
                this.new_transaction = data.new_transaction;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
            if ("explain_options" in data && data.explain_options != undefined) {
                this.explain_options = data.explain_options;
            }
        }
    }
    get parent() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set parent(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get structured_aggregation_query() {
        return pb_1.Message.getWrapperField(this, dependency_7.StructuredAggregationQuery, 2) as dependency_7.StructuredAggregationQuery;
    }
    set structured_aggregation_query(value: dependency_7.StructuredAggregationQuery) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_structured_aggregation_query() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setOneofField(this, 4, this.#one_of_decls[1], value);
    }
    get has_transaction() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get new_transaction() {
        return pb_1.Message.getWrapperField(this, dependency_5.TransactionOptions, 5) as dependency_5.TransactionOptions;
    }
    set new_transaction(value: dependency_5.TransactionOptions) {
        pb_1.Message.setOneofWrapperField(this, 5, this.#one_of_decls[1], value);
    }
    get has_new_transaction() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 6) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setOneofWrapperField(this, 6, this.#one_of_decls[1], value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 6) != null;
    }
    get explain_options() {
        return pb_1.Message.getWrapperField(this, dependency_8.ExplainOptions, 8) as dependency_8.ExplainOptions;
    }
    set explain_options(value: dependency_8.ExplainOptions) {
        pb_1.Message.setWrapperField(this, 8, value);
    }
    get has_explain_options() {
        return pb_1.Message.getField(this, 8) != null;
    }
    get query_type() {
        const cases: {
            [index: number]: "none" | "structured_aggregation_query";
        } = {
            0: "none",
            2: "structured_aggregation_query"
        };
        return cases[pb_1.Message.computeOneofCase(this, [2])];
    }
    get consistency_selector() {
        const cases: {
            [index: number]: "none" | "transaction" | "new_transaction" | "read_time";
        } = {
            0: "none",
            4: "transaction",
            5: "new_transaction",
            6: "read_time"
        };
        return cases[pb_1.Message.computeOneofCase(this, [4, 5, 6])];
    }
    static fromObject(data: {
        parent?: string;
        structured_aggregation_query?: ReturnType<typeof dependency_7.StructuredAggregationQuery.prototype.toObject>;
        transaction?: Uint8Array;
        new_transaction?: ReturnType<typeof dependency_5.TransactionOptions.prototype.toObject>;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        explain_options?: ReturnType<typeof dependency_8.ExplainOptions.prototype.toObject>;
    }): RunAggregationQueryRequest {
        const message = new RunAggregationQueryRequest({});
        if (data.parent != null) {
            message.parent = data.parent;
        }
        if (data.structured_aggregation_query != null) {
            message.structured_aggregation_query = dependency_7.StructuredAggregationQuery.fromObject(data.structured_aggregation_query);
        }
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        if (data.new_transaction != null) {
            message.new_transaction = dependency_5.TransactionOptions.fromObject(data.new_transaction);
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        if (data.explain_options != null) {
            message.explain_options = dependency_8.ExplainOptions.fromObject(data.explain_options);
        }
        return message;
    }
    toObject() {
        const data: {
            parent?: string;
            structured_aggregation_query?: ReturnType<typeof dependency_7.StructuredAggregationQuery.prototype.toObject>;
            transaction?: Uint8Array;
            new_transaction?: ReturnType<typeof dependency_5.TransactionOptions.prototype.toObject>;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
            explain_options?: ReturnType<typeof dependency_8.ExplainOptions.prototype.toObject>;
        } = {};
        if (this.parent != null) {
            data.parent = this.parent;
        }
        if (this.structured_aggregation_query != null) {
            data.structured_aggregation_query = this.structured_aggregation_query.toObject();
        }
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        if (this.new_transaction != null) {
            data.new_transaction = this.new_transaction.toObject();
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        if (this.explain_options != null) {
            data.explain_options = this.explain_options.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.parent.length)
            writer.writeString(1, this.parent);
        if (this.has_structured_aggregation_query)
            writer.writeMessage(2, this.structured_aggregation_query, () => this.structured_aggregation_query.serialize(writer));
        if (this.has_transaction)
            writer.writeBytes(4, this.transaction);
        if (this.has_new_transaction)
            writer.writeMessage(5, this.new_transaction, () => this.new_transaction.serialize(writer));
        if (this.has_read_time)
            writer.writeMessage(6, this.read_time, () => this.read_time.serialize(writer));
        if (this.has_explain_options)
            writer.writeMessage(8, this.explain_options, () => this.explain_options.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RunAggregationQueryRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RunAggregationQueryRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.parent = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.structured_aggregation_query, () => message.structured_aggregation_query = dependency_7.StructuredAggregationQuery.deserialize(reader));
                    break;
                case 4:
                    message.transaction = reader.readBytes();
                    break;
                case 5:
                    reader.readMessage(message.new_transaction, () => message.new_transaction = dependency_5.TransactionOptions.deserialize(reader));
                    break;
                case 6:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                case 8:
                    reader.readMessage(message.explain_options, () => message.explain_options = dependency_8.ExplainOptions.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): RunAggregationQueryRequest {
        return RunAggregationQueryRequest.deserialize(bytes);
    }
}
export class RunAggregationQueryResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        result?: dependency_4.AggregationResult;
        transaction?: Uint8Array;
        read_time?: dependency_11.Timestamp;
        explain_metrics?: dependency_8.ExplainMetrics;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("result" in data && data.result != undefined) {
                this.result = data.result;
            }
            if ("transaction" in data && data.transaction != undefined) {
                this.transaction = data.transaction;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
            if ("explain_metrics" in data && data.explain_metrics != undefined) {
                this.explain_metrics = data.explain_metrics;
            }
        }
    }
    get result() {
        return pb_1.Message.getWrapperField(this, dependency_4.AggregationResult, 1) as dependency_4.AggregationResult;
    }
    set result(value: dependency_4.AggregationResult) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_result() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get transaction() {
        return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
    }
    set transaction(value: Uint8Array) {
        pb_1.Message.setField(this, 2, value);
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 3) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setWrapperField(this, 3, value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get explain_metrics() {
        return pb_1.Message.getWrapperField(this, dependency_8.ExplainMetrics, 10) as dependency_8.ExplainMetrics;
    }
    set explain_metrics(value: dependency_8.ExplainMetrics) {
        pb_1.Message.setWrapperField(this, 10, value);
    }
    get has_explain_metrics() {
        return pb_1.Message.getField(this, 10) != null;
    }
    static fromObject(data: {
        result?: ReturnType<typeof dependency_4.AggregationResult.prototype.toObject>;
        transaction?: Uint8Array;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        explain_metrics?: ReturnType<typeof dependency_8.ExplainMetrics.prototype.toObject>;
    }): RunAggregationQueryResponse {
        const message = new RunAggregationQueryResponse({});
        if (data.result != null) {
            message.result = dependency_4.AggregationResult.fromObject(data.result);
        }
        if (data.transaction != null) {
            message.transaction = data.transaction;
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        if (data.explain_metrics != null) {
            message.explain_metrics = dependency_8.ExplainMetrics.fromObject(data.explain_metrics);
        }
        return message;
    }
    toObject() {
        const data: {
            result?: ReturnType<typeof dependency_4.AggregationResult.prototype.toObject>;
            transaction?: Uint8Array;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
            explain_metrics?: ReturnType<typeof dependency_8.ExplainMetrics.prototype.toObject>;
        } = {};
        if (this.result != null) {
            data.result = this.result.toObject();
        }
        if (this.transaction != null) {
            data.transaction = this.transaction;
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        if (this.explain_metrics != null) {
            data.explain_metrics = this.explain_metrics.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.has_result)
            writer.writeMessage(1, this.result, () => this.result.serialize(writer));
        if (this.transaction.length)
            writer.writeBytes(2, this.transaction);
        if (this.has_read_time)
            writer.writeMessage(3, this.read_time, () => this.read_time.serialize(writer));
        if (this.has_explain_metrics)
            writer.writeMessage(10, this.explain_metrics, () => this.explain_metrics.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RunAggregationQueryResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RunAggregationQueryResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.result, () => message.result = dependency_4.AggregationResult.deserialize(reader));
                    break;
                case 2:
                    message.transaction = reader.readBytes();
                    break;
                case 3:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                case 10:
                    reader.readMessage(message.explain_metrics, () => message.explain_metrics = dependency_8.ExplainMetrics.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): RunAggregationQueryResponse {
        return RunAggregationQueryResponse.deserialize(bytes);
    }
}
export class PartitionQueryRequest extends pb_1.Message {
    #one_of_decls: number[][] = [[2], [6]];
    constructor(data?: any[] | ({
        parent?: string;
        partition_count?: number;
        page_token?: string;
        page_size?: number;
    } & (({
        structured_query?: dependency_7.StructuredQuery;
    }) | ({
        read_time?: dependency_11.Timestamp;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("parent" in data && data.parent != undefined) {
                this.parent = data.parent;
            }
            if ("structured_query" in data && data.structured_query != undefined) {
                this.structured_query = data.structured_query;
            }
            if ("partition_count" in data && data.partition_count != undefined) {
                this.partition_count = data.partition_count;
            }
            if ("page_token" in data && data.page_token != undefined) {
                this.page_token = data.page_token;
            }
            if ("page_size" in data && data.page_size != undefined) {
                this.page_size = data.page_size;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
        }
    }
    get parent() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set parent(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get structured_query() {
        return pb_1.Message.getWrapperField(this, dependency_7.StructuredQuery, 2) as dependency_7.StructuredQuery;
    }
    set structured_query(value: dependency_7.StructuredQuery) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_structured_query() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get partition_count() {
        return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
    }
    set partition_count(value: number) {
        pb_1.Message.setField(this, 3, value);
    }
    get page_token() {
        return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
    }
    set page_token(value: string) {
        pb_1.Message.setField(this, 4, value);
    }
    get page_size() {
        return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
    }
    set page_size(value: number) {
        pb_1.Message.setField(this, 5, value);
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 6) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setOneofWrapperField(this, 6, this.#one_of_decls[1], value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 6) != null;
    }
    get query_type() {
        const cases: {
            [index: number]: "none" | "structured_query";
        } = {
            0: "none",
            2: "structured_query"
        };
        return cases[pb_1.Message.computeOneofCase(this, [2])];
    }
    get consistency_selector() {
        const cases: {
            [index: number]: "none" | "read_time";
        } = {
            0: "none",
            6: "read_time"
        };
        return cases[pb_1.Message.computeOneofCase(this, [6])];
    }
    static fromObject(data: {
        parent?: string;
        structured_query?: ReturnType<typeof dependency_7.StructuredQuery.prototype.toObject>;
        partition_count?: number;
        page_token?: string;
        page_size?: number;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
    }): PartitionQueryRequest {
        const message = new PartitionQueryRequest({});
        if (data.parent != null) {
            message.parent = data.parent;
        }
        if (data.structured_query != null) {
            message.structured_query = dependency_7.StructuredQuery.fromObject(data.structured_query);
        }
        if (data.partition_count != null) {
            message.partition_count = data.partition_count;
        }
        if (data.page_token != null) {
            message.page_token = data.page_token;
        }
        if (data.page_size != null) {
            message.page_size = data.page_size;
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        return message;
    }
    toObject() {
        const data: {
            parent?: string;
            structured_query?: ReturnType<typeof dependency_7.StructuredQuery.prototype.toObject>;
            partition_count?: number;
            page_token?: string;
            page_size?: number;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        } = {};
        if (this.parent != null) {
            data.parent = this.parent;
        }
        if (this.structured_query != null) {
            data.structured_query = this.structured_query.toObject();
        }
        if (this.partition_count != null) {
            data.partition_count = this.partition_count;
        }
        if (this.page_token != null) {
            data.page_token = this.page_token;
        }
        if (this.page_size != null) {
            data.page_size = this.page_size;
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.parent.length)
            writer.writeString(1, this.parent);
        if (this.has_structured_query)
            writer.writeMessage(2, this.structured_query, () => this.structured_query.serialize(writer));
        if (this.partition_count != 0)
            writer.writeInt64(3, this.partition_count);
        if (this.page_token.length)
            writer.writeString(4, this.page_token);
        if (this.page_size != 0)
            writer.writeInt32(5, this.page_size);
        if (this.has_read_time)
            writer.writeMessage(6, this.read_time, () => this.read_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): PartitionQueryRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new PartitionQueryRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.parent = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.structured_query, () => message.structured_query = dependency_7.StructuredQuery.deserialize(reader));
                    break;
                case 3:
                    message.partition_count = reader.readInt64();
                    break;
                case 4:
                    message.page_token = reader.readString();
                    break;
                case 5:
                    message.page_size = reader.readInt32();
                    break;
                case 6:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): PartitionQueryRequest {
        return PartitionQueryRequest.deserialize(bytes);
    }
}
export class PartitionQueryResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        partitions?: dependency_7.Cursor[];
        next_page_token?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("partitions" in data && data.partitions != undefined) {
                this.partitions = data.partitions;
            }
            if ("next_page_token" in data && data.next_page_token != undefined) {
                this.next_page_token = data.next_page_token;
            }
        }
    }
    get partitions() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_7.Cursor, 1) as dependency_7.Cursor[];
    }
    set partitions(value: dependency_7.Cursor[]) {
        pb_1.Message.setRepeatedWrapperField(this, 1, value);
    }
    get next_page_token() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set next_page_token(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        partitions?: ReturnType<typeof dependency_7.Cursor.prototype.toObject>[];
        next_page_token?: string;
    }): PartitionQueryResponse {
        const message = new PartitionQueryResponse({});
        if (data.partitions != null) {
            message.partitions = data.partitions.map(item => dependency_7.Cursor.fromObject(item));
        }
        if (data.next_page_token != null) {
            message.next_page_token = data.next_page_token;
        }
        return message;
    }
    toObject() {
        const data: {
            partitions?: ReturnType<typeof dependency_7.Cursor.prototype.toObject>[];
            next_page_token?: string;
        } = {};
        if (this.partitions != null) {
            data.partitions = this.partitions.map((item: dependency_7.Cursor) => item.toObject());
        }
        if (this.next_page_token != null) {
            data.next_page_token = this.next_page_token;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.partitions.length)
            writer.writeRepeatedMessage(1, this.partitions, (item: dependency_7.Cursor) => item.serialize(writer));
        if (this.next_page_token.length)
            writer.writeString(2, this.next_page_token);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): PartitionQueryResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new PartitionQueryResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.partitions, () => pb_1.Message.addToRepeatedWrapperField(message, 1, dependency_7.Cursor.deserialize(reader), dependency_7.Cursor));
                    break;
                case 2:
                    message.next_page_token = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): PartitionQueryResponse {
        return PartitionQueryResponse.deserialize(bytes);
    }
}
export class WriteRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        database?: string;
        stream_id?: string;
        writes?: dependency_9.Write[];
        stream_token?: Uint8Array;
        labels?: Map<string, string>;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [3], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("database" in data && data.database != undefined) {
                this.database = data.database;
            }
            if ("stream_id" in data && data.stream_id != undefined) {
                this.stream_id = data.stream_id;
            }
            if ("writes" in data && data.writes != undefined) {
                this.writes = data.writes;
            }
            if ("stream_token" in data && data.stream_token != undefined) {
                this.stream_token = data.stream_token;
            }
            if ("labels" in data && data.labels != undefined) {
                this.labels = data.labels;
            }
        }
        if (!this.labels)
            this.labels = new Map();
    }
    get database() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set database(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get stream_id() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set stream_id(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get writes() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_9.Write, 3) as dependency_9.Write[];
    }
    set writes(value: dependency_9.Write[]) {
        pb_1.Message.setRepeatedWrapperField(this, 3, value);
    }
    get stream_token() {
        return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
    }
    set stream_token(value: Uint8Array) {
        pb_1.Message.setField(this, 4, value);
    }
    get labels() {
        return pb_1.Message.getField(this, 5) as any as Map<string, string>;
    }
    set labels(value: Map<string, string>) {
        pb_1.Message.setField(this, 5, value as any);
    }
    static fromObject(data: {
        database?: string;
        stream_id?: string;
        writes?: ReturnType<typeof dependency_9.Write.prototype.toObject>[];
        stream_token?: Uint8Array;
        labels?: {
            [key: string]: string;
        };
    }): WriteRequest {
        const message = new WriteRequest({});
        if (data.database != null) {
            message.database = data.database;
        }
        if (data.stream_id != null) {
            message.stream_id = data.stream_id;
        }
        if (data.writes != null) {
            message.writes = data.writes.map(item => dependency_9.Write.fromObject(item));
        }
        if (data.stream_token != null) {
            message.stream_token = data.stream_token;
        }
        if (typeof data.labels == "object") {
            message.labels = new Map(Object.entries(data.labels));
        }
        return message;
    }
    toObject() {
        const data: {
            database?: string;
            stream_id?: string;
            writes?: ReturnType<typeof dependency_9.Write.prototype.toObject>[];
            stream_token?: Uint8Array;
            labels?: {
                [key: string]: string;
            };
        } = {};
        if (this.database != null) {
            data.database = this.database;
        }
        if (this.stream_id != null) {
            data.stream_id = this.stream_id;
        }
        if (this.writes != null) {
            data.writes = this.writes.map((item: dependency_9.Write) => item.toObject());
        }
        if (this.stream_token != null) {
            data.stream_token = this.stream_token;
        }
        if (this.labels != null) {
            data.labels = (Object.fromEntries)(this.labels);
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.database.length)
            writer.writeString(1, this.database);
        if (this.stream_id.length)
            writer.writeString(2, this.stream_id);
        if (this.writes.length)
            writer.writeRepeatedMessage(3, this.writes, (item: dependency_9.Write) => item.serialize(writer));
        if (this.stream_token.length)
            writer.writeBytes(4, this.stream_token);
        for (const [key, value] of this.labels) {
            writer.writeMessage(5, this.labels, () => {
                writer.writeString(1, key);
                writer.writeString(2, value);
            });
        }
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): WriteRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new WriteRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.database = reader.readString();
                    break;
                case 2:
                    message.stream_id = reader.readString();
                    break;
                case 3:
                    reader.readMessage(message.writes, () => pb_1.Message.addToRepeatedWrapperField(message, 3, dependency_9.Write.deserialize(reader), dependency_9.Write));
                    break;
                case 4:
                    message.stream_token = reader.readBytes();
                    break;
                case 5:
                    reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.labels as any, reader, reader.readString, reader.readString));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): WriteRequest {
        return WriteRequest.deserialize(bytes);
    }
}
export class WriteResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        stream_id?: string;
        stream_token?: Uint8Array;
        write_results?: dependency_9.WriteResult[];
        commit_time?: dependency_11.Timestamp;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [3], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("stream_id" in data && data.stream_id != undefined) {
                this.stream_id = data.stream_id;
            }
            if ("stream_token" in data && data.stream_token != undefined) {
                this.stream_token = data.stream_token;
            }
            if ("write_results" in data && data.write_results != undefined) {
                this.write_results = data.write_results;
            }
            if ("commit_time" in data && data.commit_time != undefined) {
                this.commit_time = data.commit_time;
            }
        }
    }
    get stream_id() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set stream_id(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get stream_token() {
        return pb_1.Message.getFieldWithDefault(this, 2, new Uint8Array(0)) as Uint8Array;
    }
    set stream_token(value: Uint8Array) {
        pb_1.Message.setField(this, 2, value);
    }
    get write_results() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_9.WriteResult, 3) as dependency_9.WriteResult[];
    }
    set write_results(value: dependency_9.WriteResult[]) {
        pb_1.Message.setRepeatedWrapperField(this, 3, value);
    }
    get commit_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 4) as dependency_11.Timestamp;
    }
    set commit_time(value: dependency_11.Timestamp) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_commit_time() {
        return pb_1.Message.getField(this, 4) != null;
    }
    static fromObject(data: {
        stream_id?: string;
        stream_token?: Uint8Array;
        write_results?: ReturnType<typeof dependency_9.WriteResult.prototype.toObject>[];
        commit_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
    }): WriteResponse {
        const message = new WriteResponse({});
        if (data.stream_id != null) {
            message.stream_id = data.stream_id;
        }
        if (data.stream_token != null) {
            message.stream_token = data.stream_token;
        }
        if (data.write_results != null) {
            message.write_results = data.write_results.map(item => dependency_9.WriteResult.fromObject(item));
        }
        if (data.commit_time != null) {
            message.commit_time = dependency_11.Timestamp.fromObject(data.commit_time);
        }
        return message;
    }
    toObject() {
        const data: {
            stream_id?: string;
            stream_token?: Uint8Array;
            write_results?: ReturnType<typeof dependency_9.WriteResult.prototype.toObject>[];
            commit_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        } = {};
        if (this.stream_id != null) {
            data.stream_id = this.stream_id;
        }
        if (this.stream_token != null) {
            data.stream_token = this.stream_token;
        }
        if (this.write_results != null) {
            data.write_results = this.write_results.map((item: dependency_9.WriteResult) => item.toObject());
        }
        if (this.commit_time != null) {
            data.commit_time = this.commit_time.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.stream_id.length)
            writer.writeString(1, this.stream_id);
        if (this.stream_token.length)
            writer.writeBytes(2, this.stream_token);
        if (this.write_results.length)
            writer.writeRepeatedMessage(3, this.write_results, (item: dependency_9.WriteResult) => item.serialize(writer));
        if (this.has_commit_time)
            writer.writeMessage(4, this.commit_time, () => this.commit_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): WriteResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new WriteResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.stream_id = reader.readString();
                    break;
                case 2:
                    message.stream_token = reader.readBytes();
                    break;
                case 3:
                    reader.readMessage(message.write_results, () => pb_1.Message.addToRepeatedWrapperField(message, 3, dependency_9.WriteResult.deserialize(reader), dependency_9.WriteResult));
                    break;
                case 4:
                    reader.readMessage(message.commit_time, () => message.commit_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): WriteResponse {
        return WriteResponse.deserialize(bytes);
    }
}
export class ListenRequest extends pb_1.Message {
    #one_of_decls: number[][] = [[2, 3]];
    constructor(data?: any[] | ({
        database?: string;
        labels?: Map<string, string>;
    } & (({
        add_target?: Target;
        remove_target?: never;
    } | {
        add_target?: never;
        remove_target?: number;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("database" in data && data.database != undefined) {
                this.database = data.database;
            }
            if ("add_target" in data && data.add_target != undefined) {
                this.add_target = data.add_target;
            }
            if ("remove_target" in data && data.remove_target != undefined) {
                this.remove_target = data.remove_target;
            }
            if ("labels" in data && data.labels != undefined) {
                this.labels = data.labels;
            }
        }
        if (!this.labels)
            this.labels = new Map();
    }
    get database() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set database(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get add_target() {
        return pb_1.Message.getWrapperField(this, Target, 2) as Target;
    }
    set add_target(value: Target) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_add_target() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get remove_target() {
        return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
    }
    set remove_target(value: number) {
        pb_1.Message.setOneofField(this, 3, this.#one_of_decls[0], value);
    }
    get has_remove_target() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get labels() {
        return pb_1.Message.getField(this, 4) as any as Map<string, string>;
    }
    set labels(value: Map<string, string>) {
        pb_1.Message.setField(this, 4, value as any);
    }
    get target_change() {
        const cases: {
            [index: number]: "none" | "add_target" | "remove_target";
        } = {
            0: "none",
            2: "add_target",
            3: "remove_target"
        };
        return cases[pb_1.Message.computeOneofCase(this, [2, 3])];
    }
    static fromObject(data: {
        database?: string;
        add_target?: ReturnType<typeof Target.prototype.toObject>;
        remove_target?: number;
        labels?: {
            [key: string]: string;
        };
    }): ListenRequest {
        const message = new ListenRequest({});
        if (data.database != null) {
            message.database = data.database;
        }
        if (data.add_target != null) {
            message.add_target = Target.fromObject(data.add_target);
        }
        if (data.remove_target != null) {
            message.remove_target = data.remove_target;
        }
        if (typeof data.labels == "object") {
            message.labels = new Map(Object.entries(data.labels));
        }
        return message;
    }
    toObject() {
        const data: {
            database?: string;
            add_target?: ReturnType<typeof Target.prototype.toObject>;
            remove_target?: number;
            labels?: {
                [key: string]: string;
            };
        } = {};
        if (this.database != null) {
            data.database = this.database;
        }
        if (this.add_target != null) {
            data.add_target = this.add_target.toObject();
        }
        if (this.remove_target != null) {
            data.remove_target = this.remove_target;
        }
        if (this.labels != null) {
            data.labels = (Object.fromEntries)(this.labels);
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.database.length)
            writer.writeString(1, this.database);
        if (this.has_add_target)
            writer.writeMessage(2, this.add_target, () => this.add_target.serialize(writer));
        if (this.has_remove_target)
            writer.writeInt32(3, this.remove_target);
        for (const [key, value] of this.labels) {
            writer.writeMessage(4, this.labels, () => {
                writer.writeString(1, key);
                writer.writeString(2, value);
            });
        }
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ListenRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ListenRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.database = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.add_target, () => message.add_target = Target.deserialize(reader));
                    break;
                case 3:
                    message.remove_target = reader.readInt32();
                    break;
                case 4:
                    reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.labels as any, reader, reader.readString, reader.readString));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ListenRequest {
        return ListenRequest.deserialize(bytes);
    }
}
export class ListenResponse extends pb_1.Message {
    #one_of_decls: number[][] = [[2, 3, 4, 6, 5]];
    constructor(data?: any[] | ({} & (({
        target_change?: TargetChange;
        document_change?: never;
        document_delete?: never;
        document_remove?: never;
        filter?: never;
    } | {
        target_change?: never;
        document_change?: dependency_9.DocumentChange;
        document_delete?: never;
        document_remove?: never;
        filter?: never;
    } | {
        target_change?: never;
        document_change?: never;
        document_delete?: dependency_9.DocumentDelete;
        document_remove?: never;
        filter?: never;
    } | {
        target_change?: never;
        document_change?: never;
        document_delete?: never;
        document_remove?: dependency_9.DocumentRemove;
        filter?: never;
    } | {
        target_change?: never;
        document_change?: never;
        document_delete?: never;
        document_remove?: never;
        filter?: dependency_9.ExistenceFilter;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("target_change" in data && data.target_change != undefined) {
                this.target_change = data.target_change;
            }
            if ("document_change" in data && data.document_change != undefined) {
                this.document_change = data.document_change;
            }
            if ("document_delete" in data && data.document_delete != undefined) {
                this.document_delete = data.document_delete;
            }
            if ("document_remove" in data && data.document_remove != undefined) {
                this.document_remove = data.document_remove;
            }
            if ("filter" in data && data.filter != undefined) {
                this.filter = data.filter;
            }
        }
    }
    get target_change() {
        return pb_1.Message.getWrapperField(this, TargetChange, 2) as TargetChange;
    }
    set target_change(value: TargetChange) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_target_change() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get document_change() {
        return pb_1.Message.getWrapperField(this, dependency_9.DocumentChange, 3) as dependency_9.DocumentChange;
    }
    set document_change(value: dependency_9.DocumentChange) {
        pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
    }
    get has_document_change() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get document_delete() {
        return pb_1.Message.getWrapperField(this, dependency_9.DocumentDelete, 4) as dependency_9.DocumentDelete;
    }
    set document_delete(value: dependency_9.DocumentDelete) {
        pb_1.Message.setOneofWrapperField(this, 4, this.#one_of_decls[0], value);
    }
    get has_document_delete() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get document_remove() {
        return pb_1.Message.getWrapperField(this, dependency_9.DocumentRemove, 6) as dependency_9.DocumentRemove;
    }
    set document_remove(value: dependency_9.DocumentRemove) {
        pb_1.Message.setOneofWrapperField(this, 6, this.#one_of_decls[0], value);
    }
    get has_document_remove() {
        return pb_1.Message.getField(this, 6) != null;
    }
    get filter() {
        return pb_1.Message.getWrapperField(this, dependency_9.ExistenceFilter, 5) as dependency_9.ExistenceFilter;
    }
    set filter(value: dependency_9.ExistenceFilter) {
        pb_1.Message.setOneofWrapperField(this, 5, this.#one_of_decls[0], value);
    }
    get has_filter() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get response_type() {
        const cases: {
            [index: number]: "none" | "target_change" | "document_change" | "document_delete" | "document_remove" | "filter";
        } = {
            0: "none",
            2: "target_change",
            3: "document_change",
            4: "document_delete",
            6: "document_remove",
            5: "filter"
        };
        return cases[pb_1.Message.computeOneofCase(this, [2, 3, 4, 6, 5])];
    }
    static fromObject(data: {
        target_change?: ReturnType<typeof TargetChange.prototype.toObject>;
        document_change?: ReturnType<typeof dependency_9.DocumentChange.prototype.toObject>;
        document_delete?: ReturnType<typeof dependency_9.DocumentDelete.prototype.toObject>;
        document_remove?: ReturnType<typeof dependency_9.DocumentRemove.prototype.toObject>;
        filter?: ReturnType<typeof dependency_9.ExistenceFilter.prototype.toObject>;
    }): ListenResponse {
        const message = new ListenResponse({});
        if (data.target_change != null) {
            message.target_change = TargetChange.fromObject(data.target_change);
        }
        if (data.document_change != null) {
            message.document_change = dependency_9.DocumentChange.fromObject(data.document_change);
        }
        if (data.document_delete != null) {
            message.document_delete = dependency_9.DocumentDelete.fromObject(data.document_delete);
        }
        if (data.document_remove != null) {
            message.document_remove = dependency_9.DocumentRemove.fromObject(data.document_remove);
        }
        if (data.filter != null) {
            message.filter = dependency_9.ExistenceFilter.fromObject(data.filter);
        }
        return message;
    }
    toObject() {
        const data: {
            target_change?: ReturnType<typeof TargetChange.prototype.toObject>;
            document_change?: ReturnType<typeof dependency_9.DocumentChange.prototype.toObject>;
            document_delete?: ReturnType<typeof dependency_9.DocumentDelete.prototype.toObject>;
            document_remove?: ReturnType<typeof dependency_9.DocumentRemove.prototype.toObject>;
            filter?: ReturnType<typeof dependency_9.ExistenceFilter.prototype.toObject>;
        } = {};
        if (this.target_change != null) {
            data.target_change = this.target_change.toObject();
        }
        if (this.document_change != null) {
            data.document_change = this.document_change.toObject();
        }
        if (this.document_delete != null) {
            data.document_delete = this.document_delete.toObject();
        }
        if (this.document_remove != null) {
            data.document_remove = this.document_remove.toObject();
        }
        if (this.filter != null) {
            data.filter = this.filter.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.has_target_change)
            writer.writeMessage(2, this.target_change, () => this.target_change.serialize(writer));
        if (this.has_document_change)
            writer.writeMessage(3, this.document_change, () => this.document_change.serialize(writer));
        if (this.has_document_delete)
            writer.writeMessage(4, this.document_delete, () => this.document_delete.serialize(writer));
        if (this.has_document_remove)
            writer.writeMessage(6, this.document_remove, () => this.document_remove.serialize(writer));
        if (this.has_filter)
            writer.writeMessage(5, this.filter, () => this.filter.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ListenResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ListenResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 2:
                    reader.readMessage(message.target_change, () => message.target_change = TargetChange.deserialize(reader));
                    break;
                case 3:
                    reader.readMessage(message.document_change, () => message.document_change = dependency_9.DocumentChange.deserialize(reader));
                    break;
                case 4:
                    reader.readMessage(message.document_delete, () => message.document_delete = dependency_9.DocumentDelete.deserialize(reader));
                    break;
                case 6:
                    reader.readMessage(message.document_remove, () => message.document_remove = dependency_9.DocumentRemove.deserialize(reader));
                    break;
                case 5:
                    reader.readMessage(message.filter, () => message.filter = dependency_9.ExistenceFilter.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ListenResponse {
        return ListenResponse.deserialize(bytes);
    }
}
export class Target extends pb_1.Message {
    #one_of_decls: number[][] = [[2, 3], [4, 11]];
    constructor(data?: any[] | ({
        target_id?: number;
        once?: boolean;
        expected_count?: dependency_12.Int32Value;
    } & (({
        query?: TargetQueryTarget;
        documents?: never;
    } | {
        query?: never;
        documents?: TargetDocumentsTarget;
    }) | ({
        resume_token?: Uint8Array;
        read_time?: never;
    } | {
        resume_token?: never;
        read_time?: dependency_11.Timestamp;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("query" in data && data.query != undefined) {
                this.query = data.query;
            }
            if ("documents" in data && data.documents != undefined) {
                this.documents = data.documents;
            }
            if ("resume_token" in data && data.resume_token != undefined) {
                this.resume_token = data.resume_token;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
            if ("target_id" in data && data.target_id != undefined) {
                this.target_id = data.target_id;
            }
            if ("once" in data && data.once != undefined) {
                this.once = data.once;
            }
            if ("expected_count" in data && data.expected_count != undefined) {
                this.expected_count = data.expected_count;
            }
        }
    }
    get query() {
        return pb_1.Message.getWrapperField(this, TargetQueryTarget, 2) as TargetQueryTarget;
    }
    set query(value: TargetQueryTarget) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_query() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get documents() {
        return pb_1.Message.getWrapperField(this, TargetDocumentsTarget, 3) as TargetDocumentsTarget;
    }
    set documents(value: TargetDocumentsTarget) {
        pb_1.Message.setOneofWrapperField(this, 3, this.#one_of_decls[0], value);
    }
    get has_documents() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get resume_token() {
        return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
    }
    set resume_token(value: Uint8Array) {
        pb_1.Message.setOneofField(this, 4, this.#one_of_decls[1], value);
    }
    get has_resume_token() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 11) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setOneofWrapperField(this, 11, this.#one_of_decls[1], value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 11) != null;
    }
    get target_id() {
        return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
    }
    set target_id(value: number) {
        pb_1.Message.setField(this, 5, value);
    }
    get once() {
        return pb_1.Message.getFieldWithDefault(this, 6, false) as boolean;
    }
    set once(value: boolean) {
        pb_1.Message.setField(this, 6, value);
    }
    get expected_count() {
        return pb_1.Message.getWrapperField(this, dependency_12.Int32Value, 12) as dependency_12.Int32Value;
    }
    set expected_count(value: dependency_12.Int32Value) {
        pb_1.Message.setWrapperField(this, 12, value);
    }
    get has_expected_count() {
        return pb_1.Message.getField(this, 12) != null;
    }
    get target_type() {
        const cases: {
            [index: number]: "none" | "query" | "documents";
        } = {
            0: "none",
            2: "query",
            3: "documents"
        };
        return cases[pb_1.Message.computeOneofCase(this, [2, 3])];
    }
    get resume_type() {
        const cases: {
            [index: number]: "none" | "resume_token" | "read_time";
        } = {
            0: "none",
            4: "resume_token",
            11: "read_time"
        };
        return cases[pb_1.Message.computeOneofCase(this, [4, 11])];
    }
    static fromObject(data: {
        query?: ReturnType<typeof TargetQueryTarget.prototype.toObject>;
        documents?: ReturnType<typeof TargetDocumentsTarget.prototype.toObject>;
        resume_token?: Uint8Array;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        target_id?: number;
        once?: boolean;
        expected_count?: ReturnType<typeof dependency_12.Int32Value.prototype.toObject>;
    }): Target {
        const message = new Target({});
        if (data.query != null) {
            message.query = TargetQueryTarget.fromObject(data.query);
        }
        if (data.documents != null) {
            message.documents = TargetDocumentsTarget.fromObject(data.documents);
        }
        if (data.resume_token != null) {
            message.resume_token = data.resume_token;
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        if (data.target_id != null) {
            message.target_id = data.target_id;
        }
        if (data.once != null) {
            message.once = data.once;
        }
        if (data.expected_count != null) {
            message.expected_count = dependency_12.Int32Value.fromObject(data.expected_count);
        }
        return message;
    }
    toObject() {
        const data: {
            query?: ReturnType<typeof TargetQueryTarget.prototype.toObject>;
            documents?: ReturnType<typeof TargetDocumentsTarget.prototype.toObject>;
            resume_token?: Uint8Array;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
            target_id?: number;
            once?: boolean;
            expected_count?: ReturnType<typeof dependency_12.Int32Value.prototype.toObject>;
        } = {};
        if (this.query != null) {
            data.query = this.query.toObject();
        }
        if (this.documents != null) {
            data.documents = this.documents.toObject();
        }
        if (this.resume_token != null) {
            data.resume_token = this.resume_token;
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        if (this.target_id != null) {
            data.target_id = this.target_id;
        }
        if (this.once != null) {
            data.once = this.once;
        }
        if (this.expected_count != null) {
            data.expected_count = this.expected_count.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.has_query)
            writer.writeMessage(2, this.query, () => this.query.serialize(writer));
        if (this.has_documents)
            writer.writeMessage(3, this.documents, () => this.documents.serialize(writer));
        if (this.has_resume_token)
            writer.writeBytes(4, this.resume_token);
        if (this.has_read_time)
            writer.writeMessage(11, this.read_time, () => this.read_time.serialize(writer));
        if (this.target_id != 0)
            writer.writeInt32(5, this.target_id);
        if (this.once != false)
            writer.writeBool(6, this.once);
        if (this.has_expected_count)
            writer.writeMessage(12, this.expected_count, () => this.expected_count.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Target {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Target();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 2:
                    reader.readMessage(message.query, () => message.query = TargetQueryTarget.deserialize(reader));
                    break;
                case 3:
                    reader.readMessage(message.documents, () => message.documents = TargetDocumentsTarget.deserialize(reader));
                    break;
                case 4:
                    message.resume_token = reader.readBytes();
                    break;
                case 11:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                case 5:
                    message.target_id = reader.readInt32();
                    break;
                case 6:
                    message.once = reader.readBool();
                    break;
                case 12:
                    reader.readMessage(message.expected_count, () => message.expected_count = dependency_12.Int32Value.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Target {
        return Target.deserialize(bytes);
    }
}
export class TargetDocumentsTarget extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        documents?: string[];
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("documents" in data && data.documents != undefined) {
                this.documents = data.documents;
            }
        }
    }
    get documents() {
        return pb_1.Message.getFieldWithDefault(this, 2, []) as string[];
    }
    set documents(value: string[]) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        documents?: string[];
    }): TargetDocumentsTarget {
        const message = new TargetDocumentsTarget({});
        if (data.documents != null) {
            message.documents = data.documents;
        }
        return message;
    }
    toObject() {
        const data: {
            documents?: string[];
        } = {};
        if (this.documents != null) {
            data.documents = this.documents;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.documents.length)
            writer.writeRepeatedString(2, this.documents);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): TargetDocumentsTarget {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new TargetDocumentsTarget();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 2:
                    pb_1.Message.addToRepeatedField(message, 2, reader.readString());
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): TargetDocumentsTarget {
        return TargetDocumentsTarget.deserialize(bytes);
    }
}
export class TargetQueryTarget extends pb_1.Message {
    #one_of_decls: number[][] = [[2]];
    constructor(data?: any[] | ({
        parent?: string;
    } & (({
        structured_query?: dependency_7.StructuredQuery;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("parent" in data && data.parent != undefined) {
                this.parent = data.parent;
            }
            if ("structured_query" in data && data.structured_query != undefined) {
                this.structured_query = data.structured_query;
            }
        }
    }
    get parent() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set parent(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get structured_query() {
        return pb_1.Message.getWrapperField(this, dependency_7.StructuredQuery, 2) as dependency_7.StructuredQuery;
    }
    set structured_query(value: dependency_7.StructuredQuery) {
        pb_1.Message.setOneofWrapperField(this, 2, this.#one_of_decls[0], value);
    }
    get has_structured_query() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get query_type() {
        const cases: {
            [index: number]: "none" | "structured_query";
        } = {
            0: "none",
            2: "structured_query"
        };
        return cases[pb_1.Message.computeOneofCase(this, [2])];
    }
    static fromObject(data: {
        parent?: string;
        structured_query?: ReturnType<typeof dependency_7.StructuredQuery.prototype.toObject>;
    }): TargetQueryTarget {
        const message = new TargetQueryTarget({});
        if (data.parent != null) {
            message.parent = data.parent;
        }
        if (data.structured_query != null) {
            message.structured_query = dependency_7.StructuredQuery.fromObject(data.structured_query);
        }
        return message;
    }
    toObject() {
        const data: {
            parent?: string;
            structured_query?: ReturnType<typeof dependency_7.StructuredQuery.prototype.toObject>;
        } = {};
        if (this.parent != null) {
            data.parent = this.parent;
        }
        if (this.structured_query != null) {
            data.structured_query = this.structured_query.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.parent.length)
            writer.writeString(1, this.parent);
        if (this.has_structured_query)
            writer.writeMessage(2, this.structured_query, () => this.structured_query.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): TargetQueryTarget {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new TargetQueryTarget();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.parent = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.structured_query, () => message.structured_query = dependency_7.StructuredQuery.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): TargetQueryTarget {
        return TargetQueryTarget.deserialize(bytes);
    }
}
export class TargetChange extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        target_change_type?: TargetChangeTargetChangeType;
        target_ids?: number[];
        cause?: dependency_13.Status;
        resume_token?: Uint8Array;
        read_time?: dependency_11.Timestamp;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("target_change_type" in data && data.target_change_type != undefined) {
                this.target_change_type = data.target_change_type;
            }
            if ("target_ids" in data && data.target_ids != undefined) {
                this.target_ids = data.target_ids;
            }
            if ("cause" in data && data.cause != undefined) {
                this.cause = data.cause;
            }
            if ("resume_token" in data && data.resume_token != undefined) {
                this.resume_token = data.resume_token;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
        }
    }
    get target_change_type() {
        return pb_1.Message.getFieldWithDefault(this, 1, TargetChangeTargetChangeType.NO_CHANGE) as TargetChangeTargetChangeType;
    }
    set target_change_type(value: TargetChangeTargetChangeType) {
        pb_1.Message.setField(this, 1, value);
    }
    get target_ids() {
        return pb_1.Message.getFieldWithDefault(this, 2, []) as number[];
    }
    set target_ids(value: number[]) {
        pb_1.Message.setField(this, 2, value);
    }
    get cause() {
        return pb_1.Message.getWrapperField(this, dependency_13.Status, 3) as dependency_13.Status;
    }
    set cause(value: dependency_13.Status) {
        pb_1.Message.setWrapperField(this, 3, value);
    }
    get has_cause() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get resume_token() {
        return pb_1.Message.getFieldWithDefault(this, 4, new Uint8Array(0)) as Uint8Array;
    }
    set resume_token(value: Uint8Array) {
        pb_1.Message.setField(this, 4, value);
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 6) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setWrapperField(this, 6, value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 6) != null;
    }
    static fromObject(data: {
        target_change_type?: TargetChangeTargetChangeType;
        target_ids?: number[];
        cause?: ReturnType<typeof dependency_13.Status.prototype.toObject>;
        resume_token?: Uint8Array;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
    }): TargetChange {
        const message = new TargetChange({});
        if (data.target_change_type != null) {
            message.target_change_type = data.target_change_type;
        }
        if (data.target_ids != null) {
            message.target_ids = data.target_ids;
        }
        if (data.cause != null) {
            message.cause = dependency_13.Status.fromObject(data.cause);
        }
        if (data.resume_token != null) {
            message.resume_token = data.resume_token;
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        return message;
    }
    toObject() {
        const data: {
            target_change_type?: TargetChangeTargetChangeType;
            target_ids?: number[];
            cause?: ReturnType<typeof dependency_13.Status.prototype.toObject>;
            resume_token?: Uint8Array;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        } = {};
        if (this.target_change_type != null) {
            data.target_change_type = this.target_change_type;
        }
        if (this.target_ids != null) {
            data.target_ids = this.target_ids;
        }
        if (this.cause != null) {
            data.cause = this.cause.toObject();
        }
        if (this.resume_token != null) {
            data.resume_token = this.resume_token;
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.target_change_type != TargetChangeTargetChangeType.NO_CHANGE)
            writer.writeEnum(1, this.target_change_type);
        if (this.target_ids.length)
            writer.writePackedInt32(2, this.target_ids);
        if (this.has_cause)
            writer.writeMessage(3, this.cause, () => this.cause.serialize(writer));
        if (this.resume_token.length)
            writer.writeBytes(4, this.resume_token);
        if (this.has_read_time)
            writer.writeMessage(6, this.read_time, () => this.read_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): TargetChange {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new TargetChange();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.target_change_type = reader.readEnum();
                    break;
                case 2:
                    message.target_ids = reader.readPackedInt32();
                    break;
                case 3:
                    reader.readMessage(message.cause, () => message.cause = dependency_13.Status.deserialize(reader));
                    break;
                case 4:
                    message.resume_token = reader.readBytes();
                    break;
                case 6:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): TargetChange {
        return TargetChange.deserialize(bytes);
    }
}
export enum TargetChangeTargetChangeType {
    NO_CHANGE = 0,
    ADD = 1,
    REMOVE = 2,
    CURRENT = 3,
    RESET = 4
}
export class ListCollectionIdsRequest extends pb_1.Message {
    #one_of_decls: number[][] = [[4]];
    constructor(data?: any[] | ({
        parent?: string;
        page_size?: number;
        page_token?: string;
    } & (({
        read_time?: dependency_11.Timestamp;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("parent" in data && data.parent != undefined) {
                this.parent = data.parent;
            }
            if ("page_size" in data && data.page_size != undefined) {
                this.page_size = data.page_size;
            }
            if ("page_token" in data && data.page_token != undefined) {
                this.page_token = data.page_token;
            }
            if ("read_time" in data && data.read_time != undefined) {
                this.read_time = data.read_time;
            }
        }
    }
    get parent() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set parent(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get page_size() {
        return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
    }
    set page_size(value: number) {
        pb_1.Message.setField(this, 2, value);
    }
    get page_token() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set page_token(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get read_time() {
        return pb_1.Message.getWrapperField(this, dependency_11.Timestamp, 4) as dependency_11.Timestamp;
    }
    set read_time(value: dependency_11.Timestamp) {
        pb_1.Message.setOneofWrapperField(this, 4, this.#one_of_decls[0], value);
    }
    get has_read_time() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get consistency_selector() {
        const cases: {
            [index: number]: "none" | "read_time";
        } = {
            0: "none",
            4: "read_time"
        };
        return cases[pb_1.Message.computeOneofCase(this, [4])];
    }
    static fromObject(data: {
        parent?: string;
        page_size?: number;
        page_token?: string;
        read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
    }): ListCollectionIdsRequest {
        const message = new ListCollectionIdsRequest({});
        if (data.parent != null) {
            message.parent = data.parent;
        }
        if (data.page_size != null) {
            message.page_size = data.page_size;
        }
        if (data.page_token != null) {
            message.page_token = data.page_token;
        }
        if (data.read_time != null) {
            message.read_time = dependency_11.Timestamp.fromObject(data.read_time);
        }
        return message;
    }
    toObject() {
        const data: {
            parent?: string;
            page_size?: number;
            page_token?: string;
            read_time?: ReturnType<typeof dependency_11.Timestamp.prototype.toObject>;
        } = {};
        if (this.parent != null) {
            data.parent = this.parent;
        }
        if (this.page_size != null) {
            data.page_size = this.page_size;
        }
        if (this.page_token != null) {
            data.page_token = this.page_token;
        }
        if (this.read_time != null) {
            data.read_time = this.read_time.toObject();
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.parent.length)
            writer.writeString(1, this.parent);
        if (this.page_size != 0)
            writer.writeInt32(2, this.page_size);
        if (this.page_token.length)
            writer.writeString(3, this.page_token);
        if (this.has_read_time)
            writer.writeMessage(4, this.read_time, () => this.read_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ListCollectionIdsRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ListCollectionIdsRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.parent = reader.readString();
                    break;
                case 2:
                    message.page_size = reader.readInt32();
                    break;
                case 3:
                    message.page_token = reader.readString();
                    break;
                case 4:
                    reader.readMessage(message.read_time, () => message.read_time = dependency_11.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ListCollectionIdsRequest {
        return ListCollectionIdsRequest.deserialize(bytes);
    }
}
export class ListCollectionIdsResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        collection_ids?: string[];
        next_page_token?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("collection_ids" in data && data.collection_ids != undefined) {
                this.collection_ids = data.collection_ids;
            }
            if ("next_page_token" in data && data.next_page_token != undefined) {
                this.next_page_token = data.next_page_token;
            }
        }
    }
    get collection_ids() {
        return pb_1.Message.getFieldWithDefault(this, 1, []) as string[];
    }
    set collection_ids(value: string[]) {
        pb_1.Message.setField(this, 1, value);
    }
    get next_page_token() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set next_page_token(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        collection_ids?: string[];
        next_page_token?: string;
    }): ListCollectionIdsResponse {
        const message = new ListCollectionIdsResponse({});
        if (data.collection_ids != null) {
            message.collection_ids = data.collection_ids;
        }
        if (data.next_page_token != null) {
            message.next_page_token = data.next_page_token;
        }
        return message;
    }
    toObject() {
        const data: {
            collection_ids?: string[];
            next_page_token?: string;
        } = {};
        if (this.collection_ids != null) {
            data.collection_ids = this.collection_ids;
        }
        if (this.next_page_token != null) {
            data.next_page_token = this.next_page_token;
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.collection_ids.length)
            writer.writeRepeatedString(1, this.collection_ids);
        if (this.next_page_token.length)
            writer.writeString(2, this.next_page_token);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ListCollectionIdsResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ListCollectionIdsResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    pb_1.Message.addToRepeatedField(message, 1, reader.readString());
                    break;
                case 2:
                    message.next_page_token = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ListCollectionIdsResponse {
        return ListCollectionIdsResponse.deserialize(bytes);
    }
}
export class BatchWriteRequest extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        database?: string;
        writes?: dependency_9.Write[];
        labels?: Map<string, string>;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("database" in data && data.database != undefined) {
                this.database = data.database;
            }
            if ("writes" in data && data.writes != undefined) {
                this.writes = data.writes;
            }
            if ("labels" in data && data.labels != undefined) {
                this.labels = data.labels;
            }
        }
        if (!this.labels)
            this.labels = new Map();
    }
    get database() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set database(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get writes() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_9.Write, 2) as dependency_9.Write[];
    }
    set writes(value: dependency_9.Write[]) {
        pb_1.Message.setRepeatedWrapperField(this, 2, value);
    }
    get labels() {
        return pb_1.Message.getField(this, 3) as any as Map<string, string>;
    }
    set labels(value: Map<string, string>) {
        pb_1.Message.setField(this, 3, value as any);
    }
    static fromObject(data: {
        database?: string;
        writes?: ReturnType<typeof dependency_9.Write.prototype.toObject>[];
        labels?: {
            [key: string]: string;
        };
    }): BatchWriteRequest {
        const message = new BatchWriteRequest({});
        if (data.database != null) {
            message.database = data.database;
        }
        if (data.writes != null) {
            message.writes = data.writes.map(item => dependency_9.Write.fromObject(item));
        }
        if (typeof data.labels == "object") {
            message.labels = new Map(Object.entries(data.labels));
        }
        return message;
    }
    toObject() {
        const data: {
            database?: string;
            writes?: ReturnType<typeof dependency_9.Write.prototype.toObject>[];
            labels?: {
                [key: string]: string;
            };
        } = {};
        if (this.database != null) {
            data.database = this.database;
        }
        if (this.writes != null) {
            data.writes = this.writes.map((item: dependency_9.Write) => item.toObject());
        }
        if (this.labels != null) {
            data.labels = (Object.fromEntries)(this.labels);
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.database.length)
            writer.writeString(1, this.database);
        if (this.writes.length)
            writer.writeRepeatedMessage(2, this.writes, (item: dependency_9.Write) => item.serialize(writer));
        for (const [key, value] of this.labels) {
            writer.writeMessage(3, this.labels, () => {
                writer.writeString(1, key);
                writer.writeString(2, value);
            });
        }
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BatchWriteRequest {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BatchWriteRequest();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.database = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.writes, () => pb_1.Message.addToRepeatedWrapperField(message, 2, dependency_9.Write.deserialize(reader), dependency_9.Write));
                    break;
                case 3:
                    reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.labels as any, reader, reader.readString, reader.readString));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BatchWriteRequest {
        return BatchWriteRequest.deserialize(bytes);
    }
}
export class BatchWriteResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        write_results?: dependency_9.WriteResult[];
        status?: dependency_13.Status[];
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 2], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("write_results" in data && data.write_results != undefined) {
                this.write_results = data.write_results;
            }
            if ("status" in data && data.status != undefined) {
                this.status = data.status;
            }
        }
    }
    get write_results() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_9.WriteResult, 1) as dependency_9.WriteResult[];
    }
    set write_results(value: dependency_9.WriteResult[]) {
        pb_1.Message.setRepeatedWrapperField(this, 1, value);
    }
    get status() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_13.Status, 2) as dependency_13.Status[];
    }
    set status(value: dependency_13.Status[]) {
        pb_1.Message.setRepeatedWrapperField(this, 2, value);
    }
    static fromObject(data: {
        write_results?: ReturnType<typeof dependency_9.WriteResult.prototype.toObject>[];
        status?: ReturnType<typeof dependency_13.Status.prototype.toObject>[];
    }): BatchWriteResponse {
        const message = new BatchWriteResponse({});
        if (data.write_results != null) {
            message.write_results = data.write_results.map(item => dependency_9.WriteResult.fromObject(item));
        }
        if (data.status != null) {
            message.status = data.status.map(item => dependency_13.Status.fromObject(item));
        }
        return message;
    }
    toObject() {
        const data: {
            write_results?: ReturnType<typeof dependency_9.WriteResult.prototype.toObject>[];
            status?: ReturnType<typeof dependency_13.Status.prototype.toObject>[];
        } = {};
        if (this.write_results != null) {
            data.write_results = this.write_results.map((item: dependency_9.WriteResult) => item.toObject());
        }
        if (this.status != null) {
            data.status = this.status.map((item: dependency_13.Status) => item.toObject());
        }
        return data;
    }
    serialize(): Uint8Array;
    serialize(w: pb_1.BinaryWriter): void;
    serialize(w?: pb_1.BinaryWriter): Uint8Array | void {
        const writer = w || new pb_1.BinaryWriter();
        if (this.write_results.length)
            writer.writeRepeatedMessage(1, this.write_results, (item: dependency_9.WriteResult) => item.serialize(writer));
        if (this.status.length)
            writer.writeRepeatedMessage(2, this.status, (item: dependency_13.Status) => item.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BatchWriteResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BatchWriteResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.write_results, () => pb_1.Message.addToRepeatedWrapperField(message, 1, dependency_9.WriteResult.deserialize(reader), dependency_9.WriteResult));
                    break;
                case 2:
                    reader.readMessage(message.status, () => pb_1.Message.addToRepeatedWrapperField(message, 2, dependency_13.Status.deserialize(reader), dependency_13.Status));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BatchWriteResponse {
        return BatchWriteResponse.deserialize(bytes);
    }
}
interface GrpcUnaryServiceInterface<P, R> {
    (message: P, metadata: grpc_1.Metadata, options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
    (message: P, metadata: grpc_1.Metadata, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
    (message: P, options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
    (message: P, callback: grpc_1.requestCallback<R>): grpc_1.ClientUnaryCall;
}
interface GrpcStreamServiceInterface<P, R> {
    (message: P, metadata: grpc_1.Metadata, options?: grpc_1.CallOptions): grpc_1.ClientReadableStream<R>;
    (message: P, options?: grpc_1.CallOptions): grpc_1.ClientReadableStream<R>;
}
interface GrpWritableServiceInterface<P, R> {
    (metadata: grpc_1.Metadata, options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
    (metadata: grpc_1.Metadata, callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
    (options: grpc_1.CallOptions, callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
    (callback: grpc_1.requestCallback<R>): grpc_1.ClientWritableStream<P>;
}
interface GrpcChunkServiceInterface<P, R> {
    (metadata: grpc_1.Metadata, options?: grpc_1.CallOptions): grpc_1.ClientDuplexStream<P, R>;
    (options?: grpc_1.CallOptions): grpc_1.ClientDuplexStream<P, R>;
}
interface GrpcPromiseServiceInterface<P, R> {
    (message: P, metadata: grpc_1.Metadata, options?: grpc_1.CallOptions): Promise<R>;
    (message: P, options?: grpc_1.CallOptions): Promise<R>;
}
export abstract class UnimplementedFirestoreService {
    static definition = {
        GetDocument: {
            path: "/google.firestore.v1.Firestore/GetDocument",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: GetDocumentRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => GetDocumentRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: dependency_6.Document) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => dependency_6.Document.deserialize(new Uint8Array(bytes))
        },
        ListDocuments: {
            path: "/google.firestore.v1.Firestore/ListDocuments",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: ListDocumentsRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => ListDocumentsRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: ListDocumentsResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => ListDocumentsResponse.deserialize(new Uint8Array(bytes))
        },
        UpdateDocument: {
            path: "/google.firestore.v1.Firestore/UpdateDocument",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: UpdateDocumentRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => UpdateDocumentRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: dependency_6.Document) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => dependency_6.Document.deserialize(new Uint8Array(bytes))
        },
        DeleteDocument: {
            path: "/google.firestore.v1.Firestore/DeleteDocument",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: DeleteDocumentRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => DeleteDocumentRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: dependency_10.Empty) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => dependency_10.Empty.deserialize(new Uint8Array(bytes))
        },
        BatchGetDocuments: {
            path: "/google.firestore.v1.Firestore/BatchGetDocuments",
            requestStream: false,
            responseStream: true,
            requestSerialize: (message: BatchGetDocumentsRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => BatchGetDocumentsRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: BatchGetDocumentsResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => BatchGetDocumentsResponse.deserialize(new Uint8Array(bytes))
        },
        BeginTransaction: {
            path: "/google.firestore.v1.Firestore/BeginTransaction",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: BeginTransactionRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => BeginTransactionRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: BeginTransactionResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => BeginTransactionResponse.deserialize(new Uint8Array(bytes))
        },
        Commit: {
            path: "/google.firestore.v1.Firestore/Commit",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: CommitRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => CommitRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: CommitResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => CommitResponse.deserialize(new Uint8Array(bytes))
        },
        Rollback: {
            path: "/google.firestore.v1.Firestore/Rollback",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: RollbackRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => RollbackRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: dependency_10.Empty) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => dependency_10.Empty.deserialize(new Uint8Array(bytes))
        },
        RunQuery: {
            path: "/google.firestore.v1.Firestore/RunQuery",
            requestStream: false,
            responseStream: true,
            requestSerialize: (message: RunQueryRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => RunQueryRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: RunQueryResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => RunQueryResponse.deserialize(new Uint8Array(bytes))
        },
        RunAggregationQuery: {
            path: "/google.firestore.v1.Firestore/RunAggregationQuery",
            requestStream: false,
            responseStream: true,
            requestSerialize: (message: RunAggregationQueryRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => RunAggregationQueryRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: RunAggregationQueryResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => RunAggregationQueryResponse.deserialize(new Uint8Array(bytes))
        },
        PartitionQuery: {
            path: "/google.firestore.v1.Firestore/PartitionQuery",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: PartitionQueryRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => PartitionQueryRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: PartitionQueryResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => PartitionQueryResponse.deserialize(new Uint8Array(bytes))
        },
        Write: {
            path: "/google.firestore.v1.Firestore/Write",
            requestStream: true,
            responseStream: true,
            requestSerialize: (message: WriteRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => WriteRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: WriteResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => WriteResponse.deserialize(new Uint8Array(bytes))
        },
        Listen: {
            path: "/google.firestore.v1.Firestore/Listen",
            requestStream: true,
            responseStream: true,
            requestSerialize: (message: ListenRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => ListenRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: ListenResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => ListenResponse.deserialize(new Uint8Array(bytes))
        },
        ListCollectionIds: {
            path: "/google.firestore.v1.Firestore/ListCollectionIds",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: ListCollectionIdsRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => ListCollectionIdsRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: ListCollectionIdsResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => ListCollectionIdsResponse.deserialize(new Uint8Array(bytes))
        },
        BatchWrite: {
            path: "/google.firestore.v1.Firestore/BatchWrite",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: BatchWriteRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => BatchWriteRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: BatchWriteResponse) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => BatchWriteResponse.deserialize(new Uint8Array(bytes))
        },
        CreateDocument: {
            path: "/google.firestore.v1.Firestore/CreateDocument",
            requestStream: false,
            responseStream: false,
            requestSerialize: (message: CreateDocumentRequest) => Buffer.from(message.serialize()),
            requestDeserialize: (bytes: Buffer) => CreateDocumentRequest.deserialize(new Uint8Array(bytes)),
            responseSerialize: (message: dependency_6.Document) => Buffer.from(message.serialize()),
            responseDeserialize: (bytes: Buffer) => dependency_6.Document.deserialize(new Uint8Array(bytes))
        }
    };
    [method: string]: grpc_1.UntypedHandleCall;
    abstract GetDocument(call: grpc_1.ServerUnaryCall<GetDocumentRequest, dependency_6.Document>, callback: grpc_1.sendUnaryData<dependency_6.Document>): void;
    abstract ListDocuments(call: grpc_1.ServerUnaryCall<ListDocumentsRequest, ListDocumentsResponse>, callback: grpc_1.sendUnaryData<ListDocumentsResponse>): void;
    abstract UpdateDocument(call: grpc_1.ServerUnaryCall<UpdateDocumentRequest, dependency_6.Document>, callback: grpc_1.sendUnaryData<dependency_6.Document>): void;
    abstract DeleteDocument(call: grpc_1.ServerUnaryCall<DeleteDocumentRequest, dependency_10.Empty>, callback: grpc_1.sendUnaryData<dependency_10.Empty>): void;
    abstract BatchGetDocuments(call: grpc_1.ServerWritableStream<BatchGetDocumentsRequest, BatchGetDocumentsResponse>): void;
    abstract BeginTransaction(call: grpc_1.ServerUnaryCall<BeginTransactionRequest, BeginTransactionResponse>, callback: grpc_1.sendUnaryData<BeginTransactionResponse>): void;
    abstract Commit(call: grpc_1.ServerUnaryCall<CommitRequest, CommitResponse>, callback: grpc_1.sendUnaryData<CommitResponse>): void;
    abstract Rollback(call: grpc_1.ServerUnaryCall<RollbackRequest, dependency_10.Empty>, callback: grpc_1.sendUnaryData<dependency_10.Empty>): void;
    abstract RunQuery(call: grpc_1.ServerWritableStream<RunQueryRequest, RunQueryResponse>): void;
    abstract RunAggregationQuery(call: grpc_1.ServerWritableStream<RunAggregationQueryRequest, RunAggregationQueryResponse>): void;
    abstract PartitionQuery(call: grpc_1.ServerUnaryCall<PartitionQueryRequest, PartitionQueryResponse>, callback: grpc_1.sendUnaryData<PartitionQueryResponse>): void;
    abstract Write(call: grpc_1.ServerDuplexStream<WriteRequest, WriteResponse>): void;
    abstract Listen(call: grpc_1.ServerDuplexStream<ListenRequest, ListenResponse>): void;
    abstract ListCollectionIds(call: grpc_1.ServerUnaryCall<ListCollectionIdsRequest, ListCollectionIdsResponse>, callback: grpc_1.sendUnaryData<ListCollectionIdsResponse>): void;
    abstract BatchWrite(call: grpc_1.ServerUnaryCall<BatchWriteRequest, BatchWriteResponse>, callback: grpc_1.sendUnaryData<BatchWriteResponse>): void;
    abstract CreateDocument(call: grpc_1.ServerUnaryCall<CreateDocumentRequest, dependency_6.Document>, callback: grpc_1.sendUnaryData<dependency_6.Document>): void;
}
export class FirestoreClient extends grpc_1.makeGenericClientConstructor(UnimplementedFirestoreService.definition, "Firestore", {}) {
    constructor(address: string, credentials: grpc_1.ChannelCredentials, options?: Partial<grpc_1.ChannelOptions>) {
        super(address, credentials, options);
    }
    GetDocument: GrpcUnaryServiceInterface<GetDocumentRequest, dependency_6.Document> = (message: GetDocumentRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Document>, options?: grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Document>, callback?: grpc_1.requestCallback<dependency_6.Document>): grpc_1.ClientUnaryCall => {
        return super.GetDocument(message, metadata, options, callback);
    };
    ListDocuments: GrpcUnaryServiceInterface<ListDocumentsRequest, ListDocumentsResponse> = (message: ListDocumentsRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ListDocumentsResponse>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ListDocumentsResponse>, callback?: grpc_1.requestCallback<ListDocumentsResponse>): grpc_1.ClientUnaryCall => {
        return super.ListDocuments(message, metadata, options, callback);
    };
    UpdateDocument: GrpcUnaryServiceInterface<UpdateDocumentRequest, dependency_6.Document> = (message: UpdateDocumentRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Document>, options?: grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Document>, callback?: grpc_1.requestCallback<dependency_6.Document>): grpc_1.ClientUnaryCall => {
        return super.UpdateDocument(message, metadata, options, callback);
    };
    DeleteDocument: GrpcUnaryServiceInterface<DeleteDocumentRequest, dependency_10.Empty> = (message: DeleteDocumentRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<dependency_10.Empty>, options?: grpc_1.CallOptions | grpc_1.requestCallback<dependency_10.Empty>, callback?: grpc_1.requestCallback<dependency_10.Empty>): grpc_1.ClientUnaryCall => {
        return super.DeleteDocument(message, metadata, options, callback);
    };
    BatchGetDocuments: GrpcStreamServiceInterface<BatchGetDocumentsRequest, BatchGetDocumentsResponse> = (message: BatchGetDocumentsRequest, metadata?: grpc_1.Metadata | grpc_1.CallOptions, options?: grpc_1.CallOptions): grpc_1.ClientReadableStream<BatchGetDocumentsResponse> => {
        return super.BatchGetDocuments(message, metadata, options);
    };
    BeginTransaction: GrpcUnaryServiceInterface<BeginTransactionRequest, BeginTransactionResponse> = (message: BeginTransactionRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<BeginTransactionResponse>, options?: grpc_1.CallOptions | grpc_1.requestCallback<BeginTransactionResponse>, callback?: grpc_1.requestCallback<BeginTransactionResponse>): grpc_1.ClientUnaryCall => {
        return super.BeginTransaction(message, metadata, options, callback);
    };
    Commit: GrpcUnaryServiceInterface<CommitRequest, CommitResponse> = (message: CommitRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<CommitResponse>, options?: grpc_1.CallOptions | grpc_1.requestCallback<CommitResponse>, callback?: grpc_1.requestCallback<CommitResponse>): grpc_1.ClientUnaryCall => {
        return super.Commit(message, metadata, options, callback);
    };
    Rollback: GrpcUnaryServiceInterface<RollbackRequest, dependency_10.Empty> = (message: RollbackRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<dependency_10.Empty>, options?: grpc_1.CallOptions | grpc_1.requestCallback<dependency_10.Empty>, callback?: grpc_1.requestCallback<dependency_10.Empty>): grpc_1.ClientUnaryCall => {
        return super.Rollback(message, metadata, options, callback);
    };
    RunQuery: GrpcStreamServiceInterface<RunQueryRequest, RunQueryResponse> = (message: RunQueryRequest, metadata?: grpc_1.Metadata | grpc_1.CallOptions, options?: grpc_1.CallOptions): grpc_1.ClientReadableStream<RunQueryResponse> => {
        return super.RunQuery(message, metadata, options);
    };
    RunAggregationQuery: GrpcStreamServiceInterface<RunAggregationQueryRequest, RunAggregationQueryResponse> = (message: RunAggregationQueryRequest, metadata?: grpc_1.Metadata | grpc_1.CallOptions, options?: grpc_1.CallOptions): grpc_1.ClientReadableStream<RunAggregationQueryResponse> => {
        return super.RunAggregationQuery(message, metadata, options);
    };
    PartitionQuery: GrpcUnaryServiceInterface<PartitionQueryRequest, PartitionQueryResponse> = (message: PartitionQueryRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<PartitionQueryResponse>, options?: grpc_1.CallOptions | grpc_1.requestCallback<PartitionQueryResponse>, callback?: grpc_1.requestCallback<PartitionQueryResponse>): grpc_1.ClientUnaryCall => {
        return super.PartitionQuery(message, metadata, options, callback);
    };
    Write: GrpcChunkServiceInterface<WriteRequest, WriteResponse> = (metadata?: grpc_1.Metadata | grpc_1.CallOptions, options?: grpc_1.CallOptions): grpc_1.ClientDuplexStream<WriteRequest, WriteResponse> => {
        return super.Write(metadata, options);
    };
    Listen: GrpcChunkServiceInterface<ListenRequest, ListenResponse> = (metadata?: grpc_1.Metadata | grpc_1.CallOptions, options?: grpc_1.CallOptions): grpc_1.ClientDuplexStream<ListenRequest, ListenResponse> => {
        return super.Listen(metadata, options);
    };
    ListCollectionIds: GrpcUnaryServiceInterface<ListCollectionIdsRequest, ListCollectionIdsResponse> = (message: ListCollectionIdsRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<ListCollectionIdsResponse>, options?: grpc_1.CallOptions | grpc_1.requestCallback<ListCollectionIdsResponse>, callback?: grpc_1.requestCallback<ListCollectionIdsResponse>): grpc_1.ClientUnaryCall => {
        return super.ListCollectionIds(message, metadata, options, callback);
    };
    BatchWrite: GrpcUnaryServiceInterface<BatchWriteRequest, BatchWriteResponse> = (message: BatchWriteRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<BatchWriteResponse>, options?: grpc_1.CallOptions | grpc_1.requestCallback<BatchWriteResponse>, callback?: grpc_1.requestCallback<BatchWriteResponse>): grpc_1.ClientUnaryCall => {
        return super.BatchWrite(message, metadata, options, callback);
    };
    CreateDocument: GrpcUnaryServiceInterface<CreateDocumentRequest, dependency_6.Document> = (message: CreateDocumentRequest, metadata: grpc_1.Metadata | grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Document>, options?: grpc_1.CallOptions | grpc_1.requestCallback<dependency_6.Document>, callback?: grpc_1.requestCallback<dependency_6.Document>): grpc_1.ClientUnaryCall => {
        return super.CreateDocument(message, metadata, options, callback);
    };
}
