/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: google/firestore/admin/v1/operation.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../../../api/resource";
import * as dependency_2 from "./index";
import * as dependency_3 from "./../../../protobuf/timestamp";
import * as pb_1 from "google-protobuf";
export enum OperationState {
    OPERATION_STATE_UNSPECIFIED = 0,
    INITIALIZING = 1,
    PROCESSING = 2,
    CANCELLING = 3,
    FINALIZING = 4,
    SUCCESSFUL = 5,
    FAILED = 6,
    CANCELLED = 7
}
export class IndexOperationMetadata extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        start_time?: dependency_3.Timestamp;
        end_time?: dependency_3.Timestamp;
        index?: string;
        state?: OperationState;
        progress_documents?: Progress;
        progress_bytes?: Progress;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("start_time" in data && data.start_time != undefined) {
                this.start_time = data.start_time;
            }
            if ("end_time" in data && data.end_time != undefined) {
                this.end_time = data.end_time;
            }
            if ("index" in data && data.index != undefined) {
                this.index = data.index;
            }
            if ("state" in data && data.state != undefined) {
                this.state = data.state;
            }
            if ("progress_documents" in data && data.progress_documents != undefined) {
                this.progress_documents = data.progress_documents;
            }
            if ("progress_bytes" in data && data.progress_bytes != undefined) {
                this.progress_bytes = data.progress_bytes;
            }
        }
    }
    get start_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 1) as dependency_3.Timestamp;
    }
    set start_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_start_time() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get end_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 2) as dependency_3.Timestamp;
    }
    set end_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_end_time() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get index() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set index(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get state() {
        return pb_1.Message.getFieldWithDefault(this, 4, OperationState.OPERATION_STATE_UNSPECIFIED) as OperationState;
    }
    set state(value: OperationState) {
        pb_1.Message.setField(this, 4, value);
    }
    get progress_documents() {
        return pb_1.Message.getWrapperField(this, Progress, 5) as Progress;
    }
    set progress_documents(value: Progress) {
        pb_1.Message.setWrapperField(this, 5, value);
    }
    get has_progress_documents() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get progress_bytes() {
        return pb_1.Message.getWrapperField(this, Progress, 6) as Progress;
    }
    set progress_bytes(value: Progress) {
        pb_1.Message.setWrapperField(this, 6, value);
    }
    get has_progress_bytes() {
        return pb_1.Message.getField(this, 6) != null;
    }
    static fromObject(data: {
        start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        index?: string;
        state?: OperationState;
        progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
        progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
    }): IndexOperationMetadata {
        const message = new IndexOperationMetadata({});
        if (data.start_time != null) {
            message.start_time = dependency_3.Timestamp.fromObject(data.start_time);
        }
        if (data.end_time != null) {
            message.end_time = dependency_3.Timestamp.fromObject(data.end_time);
        }
        if (data.index != null) {
            message.index = data.index;
        }
        if (data.state != null) {
            message.state = data.state;
        }
        if (data.progress_documents != null) {
            message.progress_documents = Progress.fromObject(data.progress_documents);
        }
        if (data.progress_bytes != null) {
            message.progress_bytes = Progress.fromObject(data.progress_bytes);
        }
        return message;
    }
    toObject() {
        const data: {
            start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            index?: string;
            state?: OperationState;
            progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
            progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
        } = {};
        if (this.start_time != null) {
            data.start_time = this.start_time.toObject();
        }
        if (this.end_time != null) {
            data.end_time = this.end_time.toObject();
        }
        if (this.index != null) {
            data.index = this.index;
        }
        if (this.state != null) {
            data.state = this.state;
        }
        if (this.progress_documents != null) {
            data.progress_documents = this.progress_documents.toObject();
        }
        if (this.progress_bytes != null) {
            data.progress_bytes = this.progress_bytes.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_start_time)
            writer.writeMessage(1, this.start_time, () => this.start_time.serialize(writer));
        if (this.has_end_time)
            writer.writeMessage(2, this.end_time, () => this.end_time.serialize(writer));
        if (this.index.length)
            writer.writeString(3, this.index);
        if (this.state != OperationState.OPERATION_STATE_UNSPECIFIED)
            writer.writeEnum(4, this.state);
        if (this.has_progress_documents)
            writer.writeMessage(5, this.progress_documents, () => this.progress_documents.serialize(writer));
        if (this.has_progress_bytes)
            writer.writeMessage(6, this.progress_bytes, () => this.progress_bytes.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): IndexOperationMetadata {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new IndexOperationMetadata();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.start_time, () => message.start_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.end_time, () => message.end_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 3:
                    message.index = reader.readString();
                    break;
                case 4:
                    message.state = reader.readEnum();
                    break;
                case 5:
                    reader.readMessage(message.progress_documents, () => message.progress_documents = Progress.deserialize(reader));
                    break;
                case 6:
                    reader.readMessage(message.progress_bytes, () => message.progress_bytes = Progress.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): IndexOperationMetadata {
        return IndexOperationMetadata.deserialize(bytes);
    }
}
export class FieldOperationMetadata extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        start_time?: dependency_3.Timestamp;
        end_time?: dependency_3.Timestamp;
        field?: string;
        index_config_deltas?: FieldOperationMetadataIndexConfigDelta[];
        state?: OperationState;
        progress_documents?: Progress;
        progress_bytes?: Progress;
        ttl_config_delta?: FieldOperationMetadataTtlConfigDelta;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [4], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("start_time" in data && data.start_time != undefined) {
                this.start_time = data.start_time;
            }
            if ("end_time" in data && data.end_time != undefined) {
                this.end_time = data.end_time;
            }
            if ("field" in data && data.field != undefined) {
                this.field = data.field;
            }
            if ("index_config_deltas" in data && data.index_config_deltas != undefined) {
                this.index_config_deltas = data.index_config_deltas;
            }
            if ("state" in data && data.state != undefined) {
                this.state = data.state;
            }
            if ("progress_documents" in data && data.progress_documents != undefined) {
                this.progress_documents = data.progress_documents;
            }
            if ("progress_bytes" in data && data.progress_bytes != undefined) {
                this.progress_bytes = data.progress_bytes;
            }
            if ("ttl_config_delta" in data && data.ttl_config_delta != undefined) {
                this.ttl_config_delta = data.ttl_config_delta;
            }
        }
    }
    get start_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 1) as dependency_3.Timestamp;
    }
    set start_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_start_time() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get end_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 2) as dependency_3.Timestamp;
    }
    set end_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_end_time() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get field() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set field(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get index_config_deltas() {
        return pb_1.Message.getRepeatedWrapperField(this, FieldOperationMetadataIndexConfigDelta, 4) as FieldOperationMetadataIndexConfigDelta[];
    }
    set index_config_deltas(value: FieldOperationMetadataIndexConfigDelta[]) {
        pb_1.Message.setRepeatedWrapperField(this, 4, value);
    }
    get state() {
        return pb_1.Message.getFieldWithDefault(this, 5, OperationState.OPERATION_STATE_UNSPECIFIED) as OperationState;
    }
    set state(value: OperationState) {
        pb_1.Message.setField(this, 5, value);
    }
    get progress_documents() {
        return pb_1.Message.getWrapperField(this, Progress, 6) as Progress;
    }
    set progress_documents(value: Progress) {
        pb_1.Message.setWrapperField(this, 6, value);
    }
    get has_progress_documents() {
        return pb_1.Message.getField(this, 6) != null;
    }
    get progress_bytes() {
        return pb_1.Message.getWrapperField(this, Progress, 7) as Progress;
    }
    set progress_bytes(value: Progress) {
        pb_1.Message.setWrapperField(this, 7, value);
    }
    get has_progress_bytes() {
        return pb_1.Message.getField(this, 7) != null;
    }
    get ttl_config_delta() {
        return pb_1.Message.getWrapperField(this, FieldOperationMetadataTtlConfigDelta, 8) as FieldOperationMetadataTtlConfigDelta;
    }
    set ttl_config_delta(value: FieldOperationMetadataTtlConfigDelta) {
        pb_1.Message.setWrapperField(this, 8, value);
    }
    get has_ttl_config_delta() {
        return pb_1.Message.getField(this, 8) != null;
    }
    static fromObject(data: {
        start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        field?: string;
        index_config_deltas?: ReturnType<typeof FieldOperationMetadataIndexConfigDelta.prototype.toObject>[];
        state?: OperationState;
        progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
        progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
        ttl_config_delta?: ReturnType<typeof FieldOperationMetadataTtlConfigDelta.prototype.toObject>;
    }): FieldOperationMetadata {
        const message = new FieldOperationMetadata({});
        if (data.start_time != null) {
            message.start_time = dependency_3.Timestamp.fromObject(data.start_time);
        }
        if (data.end_time != null) {
            message.end_time = dependency_3.Timestamp.fromObject(data.end_time);
        }
        if (data.field != null) {
            message.field = data.field;
        }
        if (data.index_config_deltas != null) {
            message.index_config_deltas = data.index_config_deltas.map(item => FieldOperationMetadataIndexConfigDelta.fromObject(item));
        }
        if (data.state != null) {
            message.state = data.state;
        }
        if (data.progress_documents != null) {
            message.progress_documents = Progress.fromObject(data.progress_documents);
        }
        if (data.progress_bytes != null) {
            message.progress_bytes = Progress.fromObject(data.progress_bytes);
        }
        if (data.ttl_config_delta != null) {
            message.ttl_config_delta = FieldOperationMetadataTtlConfigDelta.fromObject(data.ttl_config_delta);
        }
        return message;
    }
    toObject() {
        const data: {
            start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            field?: string;
            index_config_deltas?: ReturnType<typeof FieldOperationMetadataIndexConfigDelta.prototype.toObject>[];
            state?: OperationState;
            progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
            progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
            ttl_config_delta?: ReturnType<typeof FieldOperationMetadataTtlConfigDelta.prototype.toObject>;
        } = {};
        if (this.start_time != null) {
            data.start_time = this.start_time.toObject();
        }
        if (this.end_time != null) {
            data.end_time = this.end_time.toObject();
        }
        if (this.field != null) {
            data.field = this.field;
        }
        if (this.index_config_deltas != null) {
            data.index_config_deltas = this.index_config_deltas.map((item: FieldOperationMetadataIndexConfigDelta) => item.toObject());
        }
        if (this.state != null) {
            data.state = this.state;
        }
        if (this.progress_documents != null) {
            data.progress_documents = this.progress_documents.toObject();
        }
        if (this.progress_bytes != null) {
            data.progress_bytes = this.progress_bytes.toObject();
        }
        if (this.ttl_config_delta != null) {
            data.ttl_config_delta = this.ttl_config_delta.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_start_time)
            writer.writeMessage(1, this.start_time, () => this.start_time.serialize(writer));
        if (this.has_end_time)
            writer.writeMessage(2, this.end_time, () => this.end_time.serialize(writer));
        if (this.field.length)
            writer.writeString(3, this.field);
        if (this.index_config_deltas.length)
            writer.writeRepeatedMessage(4, this.index_config_deltas, (item: FieldOperationMetadataIndexConfigDelta) => item.serialize(writer));
        if (this.state != OperationState.OPERATION_STATE_UNSPECIFIED)
            writer.writeEnum(5, this.state);
        if (this.has_progress_documents)
            writer.writeMessage(6, this.progress_documents, () => this.progress_documents.serialize(writer));
        if (this.has_progress_bytes)
            writer.writeMessage(7, this.progress_bytes, () => this.progress_bytes.serialize(writer));
        if (this.has_ttl_config_delta)
            writer.writeMessage(8, this.ttl_config_delta, () => this.ttl_config_delta.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FieldOperationMetadata {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FieldOperationMetadata();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.start_time, () => message.start_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.end_time, () => message.end_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 3:
                    message.field = reader.readString();
                    break;
                case 4:
                    reader.readMessage(message.index_config_deltas, () => pb_1.Message.addToRepeatedWrapperField(message, 4, FieldOperationMetadataIndexConfigDelta.deserialize(reader), FieldOperationMetadataIndexConfigDelta));
                    break;
                case 5:
                    message.state = reader.readEnum();
                    break;
                case 6:
                    reader.readMessage(message.progress_documents, () => message.progress_documents = Progress.deserialize(reader));
                    break;
                case 7:
                    reader.readMessage(message.progress_bytes, () => message.progress_bytes = Progress.deserialize(reader));
                    break;
                case 8:
                    reader.readMessage(message.ttl_config_delta, () => message.ttl_config_delta = FieldOperationMetadataTtlConfigDelta.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): FieldOperationMetadata {
        return FieldOperationMetadata.deserialize(bytes);
    }
}
export class FieldOperationMetadataIndexConfigDelta extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        change_type?: FieldOperationMetadataIndexConfigDeltaChangeType;
        index?: dependency_2.Index;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("change_type" in data && data.change_type != undefined) {
                this.change_type = data.change_type;
            }
            if ("index" in data && data.index != undefined) {
                this.index = data.index;
            }
        }
    }
    get change_type() {
        return pb_1.Message.getFieldWithDefault(this, 1, FieldOperationMetadataIndexConfigDeltaChangeType.CHANGE_TYPE_UNSPECIFIED) as FieldOperationMetadataIndexConfigDeltaChangeType;
    }
    set change_type(value: FieldOperationMetadataIndexConfigDeltaChangeType) {
        pb_1.Message.setField(this, 1, value);
    }
    get index() {
        return pb_1.Message.getWrapperField(this, dependency_2.Index, 2) as dependency_2.Index;
    }
    set index(value: dependency_2.Index) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_index() {
        return pb_1.Message.getField(this, 2) != null;
    }
    static fromObject(data: {
        change_type?: FieldOperationMetadataIndexConfigDeltaChangeType;
        index?: ReturnType<typeof dependency_2.Index.prototype.toObject>;
    }): FieldOperationMetadataIndexConfigDelta {
        const message = new FieldOperationMetadataIndexConfigDelta({});
        if (data.change_type != null) {
            message.change_type = data.change_type;
        }
        if (data.index != null) {
            message.index = dependency_2.Index.fromObject(data.index);
        }
        return message;
    }
    toObject() {
        const data: {
            change_type?: FieldOperationMetadataIndexConfigDeltaChangeType;
            index?: ReturnType<typeof dependency_2.Index.prototype.toObject>;
        } = {};
        if (this.change_type != null) {
            data.change_type = this.change_type;
        }
        if (this.index != null) {
            data.index = this.index.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.change_type != FieldOperationMetadataIndexConfigDeltaChangeType.CHANGE_TYPE_UNSPECIFIED)
            writer.writeEnum(1, this.change_type);
        if (this.has_index)
            writer.writeMessage(2, this.index, () => this.index.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FieldOperationMetadataIndexConfigDelta {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FieldOperationMetadataIndexConfigDelta();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.change_type = reader.readEnum();
                    break;
                case 2:
                    reader.readMessage(message.index, () => message.index = dependency_2.Index.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): FieldOperationMetadataIndexConfigDelta {
        return FieldOperationMetadataIndexConfigDelta.deserialize(bytes);
    }
}
export enum FieldOperationMetadataIndexConfigDeltaChangeType {
    CHANGE_TYPE_UNSPECIFIED = 0,
    ADD = 1,
    REMOVE = 2
}
export class FieldOperationMetadataTtlConfigDelta extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        change_type?: FieldOperationMetadataTtlConfigDeltaChangeType;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("change_type" in data && data.change_type != undefined) {
                this.change_type = data.change_type;
            }
        }
    }
    get change_type() {
        return pb_1.Message.getFieldWithDefault(this, 1, FieldOperationMetadataTtlConfigDeltaChangeType.CHANGE_TYPE_UNSPECIFIED) as FieldOperationMetadataTtlConfigDeltaChangeType;
    }
    set change_type(value: FieldOperationMetadataTtlConfigDeltaChangeType) {
        pb_1.Message.setField(this, 1, value);
    }
    static fromObject(data: {
        change_type?: FieldOperationMetadataTtlConfigDeltaChangeType;
    }): FieldOperationMetadataTtlConfigDelta {
        const message = new FieldOperationMetadataTtlConfigDelta({});
        if (data.change_type != null) {
            message.change_type = data.change_type;
        }
        return message;
    }
    toObject() {
        const data: {
            change_type?: FieldOperationMetadataTtlConfigDeltaChangeType;
        } = {};
        if (this.change_type != null) {
            data.change_type = this.change_type;
        }
        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.change_type != FieldOperationMetadataTtlConfigDeltaChangeType.CHANGE_TYPE_UNSPECIFIED)
            writer.writeEnum(1, this.change_type);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FieldOperationMetadataTtlConfigDelta {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FieldOperationMetadataTtlConfigDelta();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.change_type = reader.readEnum();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): FieldOperationMetadataTtlConfigDelta {
        return FieldOperationMetadataTtlConfigDelta.deserialize(bytes);
    }
}
export enum FieldOperationMetadataTtlConfigDeltaChangeType {
    CHANGE_TYPE_UNSPECIFIED = 0,
    ADD = 1,
    REMOVE = 2
}
export class ExportDocumentsMetadata extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        start_time?: dependency_3.Timestamp;
        end_time?: dependency_3.Timestamp;
        operation_state?: OperationState;
        progress_documents?: Progress;
        progress_bytes?: Progress;
        collection_ids?: string[];
        output_uri_prefix?: string;
        namespace_ids?: string[];
        snapshot_time?: dependency_3.Timestamp;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [6, 8], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("start_time" in data && data.start_time != undefined) {
                this.start_time = data.start_time;
            }
            if ("end_time" in data && data.end_time != undefined) {
                this.end_time = data.end_time;
            }
            if ("operation_state" in data && data.operation_state != undefined) {
                this.operation_state = data.operation_state;
            }
            if ("progress_documents" in data && data.progress_documents != undefined) {
                this.progress_documents = data.progress_documents;
            }
            if ("progress_bytes" in data && data.progress_bytes != undefined) {
                this.progress_bytes = data.progress_bytes;
            }
            if ("collection_ids" in data && data.collection_ids != undefined) {
                this.collection_ids = data.collection_ids;
            }
            if ("output_uri_prefix" in data && data.output_uri_prefix != undefined) {
                this.output_uri_prefix = data.output_uri_prefix;
            }
            if ("namespace_ids" in data && data.namespace_ids != undefined) {
                this.namespace_ids = data.namespace_ids;
            }
            if ("snapshot_time" in data && data.snapshot_time != undefined) {
                this.snapshot_time = data.snapshot_time;
            }
        }
    }
    get start_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 1) as dependency_3.Timestamp;
    }
    set start_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_start_time() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get end_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 2) as dependency_3.Timestamp;
    }
    set end_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_end_time() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get operation_state() {
        return pb_1.Message.getFieldWithDefault(this, 3, OperationState.OPERATION_STATE_UNSPECIFIED) as OperationState;
    }
    set operation_state(value: OperationState) {
        pb_1.Message.setField(this, 3, value);
    }
    get progress_documents() {
        return pb_1.Message.getWrapperField(this, Progress, 4) as Progress;
    }
    set progress_documents(value: Progress) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_progress_documents() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get progress_bytes() {
        return pb_1.Message.getWrapperField(this, Progress, 5) as Progress;
    }
    set progress_bytes(value: Progress) {
        pb_1.Message.setWrapperField(this, 5, value);
    }
    get has_progress_bytes() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get collection_ids() {
        return pb_1.Message.getFieldWithDefault(this, 6, []) as string[];
    }
    set collection_ids(value: string[]) {
        pb_1.Message.setField(this, 6, value);
    }
    get output_uri_prefix() {
        return pb_1.Message.getFieldWithDefault(this, 7, "") as string;
    }
    set output_uri_prefix(value: string) {
        pb_1.Message.setField(this, 7, value);
    }
    get namespace_ids() {
        return pb_1.Message.getFieldWithDefault(this, 8, []) as string[];
    }
    set namespace_ids(value: string[]) {
        pb_1.Message.setField(this, 8, value);
    }
    get snapshot_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 9) as dependency_3.Timestamp;
    }
    set snapshot_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 9, value);
    }
    get has_snapshot_time() {
        return pb_1.Message.getField(this, 9) != null;
    }
    static fromObject(data: {
        start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        operation_state?: OperationState;
        progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
        progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
        collection_ids?: string[];
        output_uri_prefix?: string;
        namespace_ids?: string[];
        snapshot_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
    }): ExportDocumentsMetadata {
        const message = new ExportDocumentsMetadata({});
        if (data.start_time != null) {
            message.start_time = dependency_3.Timestamp.fromObject(data.start_time);
        }
        if (data.end_time != null) {
            message.end_time = dependency_3.Timestamp.fromObject(data.end_time);
        }
        if (data.operation_state != null) {
            message.operation_state = data.operation_state;
        }
        if (data.progress_documents != null) {
            message.progress_documents = Progress.fromObject(data.progress_documents);
        }
        if (data.progress_bytes != null) {
            message.progress_bytes = Progress.fromObject(data.progress_bytes);
        }
        if (data.collection_ids != null) {
            message.collection_ids = data.collection_ids;
        }
        if (data.output_uri_prefix != null) {
            message.output_uri_prefix = data.output_uri_prefix;
        }
        if (data.namespace_ids != null) {
            message.namespace_ids = data.namespace_ids;
        }
        if (data.snapshot_time != null) {
            message.snapshot_time = dependency_3.Timestamp.fromObject(data.snapshot_time);
        }
        return message;
    }
    toObject() {
        const data: {
            start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            operation_state?: OperationState;
            progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
            progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
            collection_ids?: string[];
            output_uri_prefix?: string;
            namespace_ids?: string[];
            snapshot_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        } = {};
        if (this.start_time != null) {
            data.start_time = this.start_time.toObject();
        }
        if (this.end_time != null) {
            data.end_time = this.end_time.toObject();
        }
        if (this.operation_state != null) {
            data.operation_state = this.operation_state;
        }
        if (this.progress_documents != null) {
            data.progress_documents = this.progress_documents.toObject();
        }
        if (this.progress_bytes != null) {
            data.progress_bytes = this.progress_bytes.toObject();
        }
        if (this.collection_ids != null) {
            data.collection_ids = this.collection_ids;
        }
        if (this.output_uri_prefix != null) {
            data.output_uri_prefix = this.output_uri_prefix;
        }
        if (this.namespace_ids != null) {
            data.namespace_ids = this.namespace_ids;
        }
        if (this.snapshot_time != null) {
            data.snapshot_time = this.snapshot_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_start_time)
            writer.writeMessage(1, this.start_time, () => this.start_time.serialize(writer));
        if (this.has_end_time)
            writer.writeMessage(2, this.end_time, () => this.end_time.serialize(writer));
        if (this.operation_state != OperationState.OPERATION_STATE_UNSPECIFIED)
            writer.writeEnum(3, this.operation_state);
        if (this.has_progress_documents)
            writer.writeMessage(4, this.progress_documents, () => this.progress_documents.serialize(writer));
        if (this.has_progress_bytes)
            writer.writeMessage(5, this.progress_bytes, () => this.progress_bytes.serialize(writer));
        if (this.collection_ids.length)
            writer.writeRepeatedString(6, this.collection_ids);
        if (this.output_uri_prefix.length)
            writer.writeString(7, this.output_uri_prefix);
        if (this.namespace_ids.length)
            writer.writeRepeatedString(8, this.namespace_ids);
        if (this.has_snapshot_time)
            writer.writeMessage(9, this.snapshot_time, () => this.snapshot_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ExportDocumentsMetadata {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ExportDocumentsMetadata();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.start_time, () => message.start_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.end_time, () => message.end_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 3:
                    message.operation_state = reader.readEnum();
                    break;
                case 4:
                    reader.readMessage(message.progress_documents, () => message.progress_documents = Progress.deserialize(reader));
                    break;
                case 5:
                    reader.readMessage(message.progress_bytes, () => message.progress_bytes = Progress.deserialize(reader));
                    break;
                case 6:
                    pb_1.Message.addToRepeatedField(message, 6, reader.readString());
                    break;
                case 7:
                    message.output_uri_prefix = reader.readString();
                    break;
                case 8:
                    pb_1.Message.addToRepeatedField(message, 8, reader.readString());
                    break;
                case 9:
                    reader.readMessage(message.snapshot_time, () => message.snapshot_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ExportDocumentsMetadata {
        return ExportDocumentsMetadata.deserialize(bytes);
    }
}
export class ImportDocumentsMetadata extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        start_time?: dependency_3.Timestamp;
        end_time?: dependency_3.Timestamp;
        operation_state?: OperationState;
        progress_documents?: Progress;
        progress_bytes?: Progress;
        collection_ids?: string[];
        input_uri_prefix?: string;
        namespace_ids?: string[];
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [6, 8], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("start_time" in data && data.start_time != undefined) {
                this.start_time = data.start_time;
            }
            if ("end_time" in data && data.end_time != undefined) {
                this.end_time = data.end_time;
            }
            if ("operation_state" in data && data.operation_state != undefined) {
                this.operation_state = data.operation_state;
            }
            if ("progress_documents" in data && data.progress_documents != undefined) {
                this.progress_documents = data.progress_documents;
            }
            if ("progress_bytes" in data && data.progress_bytes != undefined) {
                this.progress_bytes = data.progress_bytes;
            }
            if ("collection_ids" in data && data.collection_ids != undefined) {
                this.collection_ids = data.collection_ids;
            }
            if ("input_uri_prefix" in data && data.input_uri_prefix != undefined) {
                this.input_uri_prefix = data.input_uri_prefix;
            }
            if ("namespace_ids" in data && data.namespace_ids != undefined) {
                this.namespace_ids = data.namespace_ids;
            }
        }
    }
    get start_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 1) as dependency_3.Timestamp;
    }
    set start_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_start_time() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get end_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 2) as dependency_3.Timestamp;
    }
    set end_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_end_time() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get operation_state() {
        return pb_1.Message.getFieldWithDefault(this, 3, OperationState.OPERATION_STATE_UNSPECIFIED) as OperationState;
    }
    set operation_state(value: OperationState) {
        pb_1.Message.setField(this, 3, value);
    }
    get progress_documents() {
        return pb_1.Message.getWrapperField(this, Progress, 4) as Progress;
    }
    set progress_documents(value: Progress) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_progress_documents() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get progress_bytes() {
        return pb_1.Message.getWrapperField(this, Progress, 5) as Progress;
    }
    set progress_bytes(value: Progress) {
        pb_1.Message.setWrapperField(this, 5, value);
    }
    get has_progress_bytes() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get collection_ids() {
        return pb_1.Message.getFieldWithDefault(this, 6, []) as string[];
    }
    set collection_ids(value: string[]) {
        pb_1.Message.setField(this, 6, value);
    }
    get input_uri_prefix() {
        return pb_1.Message.getFieldWithDefault(this, 7, "") as string;
    }
    set input_uri_prefix(value: string) {
        pb_1.Message.setField(this, 7, value);
    }
    get namespace_ids() {
        return pb_1.Message.getFieldWithDefault(this, 8, []) as string[];
    }
    set namespace_ids(value: string[]) {
        pb_1.Message.setField(this, 8, value);
    }
    static fromObject(data: {
        start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        operation_state?: OperationState;
        progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
        progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
        collection_ids?: string[];
        input_uri_prefix?: string;
        namespace_ids?: string[];
    }): ImportDocumentsMetadata {
        const message = new ImportDocumentsMetadata({});
        if (data.start_time != null) {
            message.start_time = dependency_3.Timestamp.fromObject(data.start_time);
        }
        if (data.end_time != null) {
            message.end_time = dependency_3.Timestamp.fromObject(data.end_time);
        }
        if (data.operation_state != null) {
            message.operation_state = data.operation_state;
        }
        if (data.progress_documents != null) {
            message.progress_documents = Progress.fromObject(data.progress_documents);
        }
        if (data.progress_bytes != null) {
            message.progress_bytes = Progress.fromObject(data.progress_bytes);
        }
        if (data.collection_ids != null) {
            message.collection_ids = data.collection_ids;
        }
        if (data.input_uri_prefix != null) {
            message.input_uri_prefix = data.input_uri_prefix;
        }
        if (data.namespace_ids != null) {
            message.namespace_ids = data.namespace_ids;
        }
        return message;
    }
    toObject() {
        const data: {
            start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            operation_state?: OperationState;
            progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
            progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
            collection_ids?: string[];
            input_uri_prefix?: string;
            namespace_ids?: string[];
        } = {};
        if (this.start_time != null) {
            data.start_time = this.start_time.toObject();
        }
        if (this.end_time != null) {
            data.end_time = this.end_time.toObject();
        }
        if (this.operation_state != null) {
            data.operation_state = this.operation_state;
        }
        if (this.progress_documents != null) {
            data.progress_documents = this.progress_documents.toObject();
        }
        if (this.progress_bytes != null) {
            data.progress_bytes = this.progress_bytes.toObject();
        }
        if (this.collection_ids != null) {
            data.collection_ids = this.collection_ids;
        }
        if (this.input_uri_prefix != null) {
            data.input_uri_prefix = this.input_uri_prefix;
        }
        if (this.namespace_ids != null) {
            data.namespace_ids = this.namespace_ids;
        }
        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_start_time)
            writer.writeMessage(1, this.start_time, () => this.start_time.serialize(writer));
        if (this.has_end_time)
            writer.writeMessage(2, this.end_time, () => this.end_time.serialize(writer));
        if (this.operation_state != OperationState.OPERATION_STATE_UNSPECIFIED)
            writer.writeEnum(3, this.operation_state);
        if (this.has_progress_documents)
            writer.writeMessage(4, this.progress_documents, () => this.progress_documents.serialize(writer));
        if (this.has_progress_bytes)
            writer.writeMessage(5, this.progress_bytes, () => this.progress_bytes.serialize(writer));
        if (this.collection_ids.length)
            writer.writeRepeatedString(6, this.collection_ids);
        if (this.input_uri_prefix.length)
            writer.writeString(7, this.input_uri_prefix);
        if (this.namespace_ids.length)
            writer.writeRepeatedString(8, this.namespace_ids);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ImportDocumentsMetadata {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ImportDocumentsMetadata();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.start_time, () => message.start_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.end_time, () => message.end_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 3:
                    message.operation_state = reader.readEnum();
                    break;
                case 4:
                    reader.readMessage(message.progress_documents, () => message.progress_documents = Progress.deserialize(reader));
                    break;
                case 5:
                    reader.readMessage(message.progress_bytes, () => message.progress_bytes = Progress.deserialize(reader));
                    break;
                case 6:
                    pb_1.Message.addToRepeatedField(message, 6, reader.readString());
                    break;
                case 7:
                    message.input_uri_prefix = reader.readString();
                    break;
                case 8:
                    pb_1.Message.addToRepeatedField(message, 8, reader.readString());
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ImportDocumentsMetadata {
        return ImportDocumentsMetadata.deserialize(bytes);
    }
}
export class BulkDeleteDocumentsMetadata extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        start_time?: dependency_3.Timestamp;
        end_time?: dependency_3.Timestamp;
        operation_state?: OperationState;
        progress_documents?: Progress;
        progress_bytes?: Progress;
        collection_ids?: string[];
        namespace_ids?: string[];
        snapshot_time?: dependency_3.Timestamp;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [6, 7], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("start_time" in data && data.start_time != undefined) {
                this.start_time = data.start_time;
            }
            if ("end_time" in data && data.end_time != undefined) {
                this.end_time = data.end_time;
            }
            if ("operation_state" in data && data.operation_state != undefined) {
                this.operation_state = data.operation_state;
            }
            if ("progress_documents" in data && data.progress_documents != undefined) {
                this.progress_documents = data.progress_documents;
            }
            if ("progress_bytes" in data && data.progress_bytes != undefined) {
                this.progress_bytes = data.progress_bytes;
            }
            if ("collection_ids" in data && data.collection_ids != undefined) {
                this.collection_ids = data.collection_ids;
            }
            if ("namespace_ids" in data && data.namespace_ids != undefined) {
                this.namespace_ids = data.namespace_ids;
            }
            if ("snapshot_time" in data && data.snapshot_time != undefined) {
                this.snapshot_time = data.snapshot_time;
            }
        }
    }
    get start_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 1) as dependency_3.Timestamp;
    }
    set start_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_start_time() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get end_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 2) as dependency_3.Timestamp;
    }
    set end_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_end_time() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get operation_state() {
        return pb_1.Message.getFieldWithDefault(this, 3, OperationState.OPERATION_STATE_UNSPECIFIED) as OperationState;
    }
    set operation_state(value: OperationState) {
        pb_1.Message.setField(this, 3, value);
    }
    get progress_documents() {
        return pb_1.Message.getWrapperField(this, Progress, 4) as Progress;
    }
    set progress_documents(value: Progress) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_progress_documents() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get progress_bytes() {
        return pb_1.Message.getWrapperField(this, Progress, 5) as Progress;
    }
    set progress_bytes(value: Progress) {
        pb_1.Message.setWrapperField(this, 5, value);
    }
    get has_progress_bytes() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get collection_ids() {
        return pb_1.Message.getFieldWithDefault(this, 6, []) as string[];
    }
    set collection_ids(value: string[]) {
        pb_1.Message.setField(this, 6, value);
    }
    get namespace_ids() {
        return pb_1.Message.getFieldWithDefault(this, 7, []) as string[];
    }
    set namespace_ids(value: string[]) {
        pb_1.Message.setField(this, 7, value);
    }
    get snapshot_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 8) as dependency_3.Timestamp;
    }
    set snapshot_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 8, value);
    }
    get has_snapshot_time() {
        return pb_1.Message.getField(this, 8) != null;
    }
    static fromObject(data: {
        start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        operation_state?: OperationState;
        progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
        progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
        collection_ids?: string[];
        namespace_ids?: string[];
        snapshot_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
    }): BulkDeleteDocumentsMetadata {
        const message = new BulkDeleteDocumentsMetadata({});
        if (data.start_time != null) {
            message.start_time = dependency_3.Timestamp.fromObject(data.start_time);
        }
        if (data.end_time != null) {
            message.end_time = dependency_3.Timestamp.fromObject(data.end_time);
        }
        if (data.operation_state != null) {
            message.operation_state = data.operation_state;
        }
        if (data.progress_documents != null) {
            message.progress_documents = Progress.fromObject(data.progress_documents);
        }
        if (data.progress_bytes != null) {
            message.progress_bytes = Progress.fromObject(data.progress_bytes);
        }
        if (data.collection_ids != null) {
            message.collection_ids = data.collection_ids;
        }
        if (data.namespace_ids != null) {
            message.namespace_ids = data.namespace_ids;
        }
        if (data.snapshot_time != null) {
            message.snapshot_time = dependency_3.Timestamp.fromObject(data.snapshot_time);
        }
        return message;
    }
    toObject() {
        const data: {
            start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            operation_state?: OperationState;
            progress_documents?: ReturnType<typeof Progress.prototype.toObject>;
            progress_bytes?: ReturnType<typeof Progress.prototype.toObject>;
            collection_ids?: string[];
            namespace_ids?: string[];
            snapshot_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        } = {};
        if (this.start_time != null) {
            data.start_time = this.start_time.toObject();
        }
        if (this.end_time != null) {
            data.end_time = this.end_time.toObject();
        }
        if (this.operation_state != null) {
            data.operation_state = this.operation_state;
        }
        if (this.progress_documents != null) {
            data.progress_documents = this.progress_documents.toObject();
        }
        if (this.progress_bytes != null) {
            data.progress_bytes = this.progress_bytes.toObject();
        }
        if (this.collection_ids != null) {
            data.collection_ids = this.collection_ids;
        }
        if (this.namespace_ids != null) {
            data.namespace_ids = this.namespace_ids;
        }
        if (this.snapshot_time != null) {
            data.snapshot_time = this.snapshot_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_start_time)
            writer.writeMessage(1, this.start_time, () => this.start_time.serialize(writer));
        if (this.has_end_time)
            writer.writeMessage(2, this.end_time, () => this.end_time.serialize(writer));
        if (this.operation_state != OperationState.OPERATION_STATE_UNSPECIFIED)
            writer.writeEnum(3, this.operation_state);
        if (this.has_progress_documents)
            writer.writeMessage(4, this.progress_documents, () => this.progress_documents.serialize(writer));
        if (this.has_progress_bytes)
            writer.writeMessage(5, this.progress_bytes, () => this.progress_bytes.serialize(writer));
        if (this.collection_ids.length)
            writer.writeRepeatedString(6, this.collection_ids);
        if (this.namespace_ids.length)
            writer.writeRepeatedString(7, this.namespace_ids);
        if (this.has_snapshot_time)
            writer.writeMessage(8, this.snapshot_time, () => this.snapshot_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BulkDeleteDocumentsMetadata {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BulkDeleteDocumentsMetadata();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.start_time, () => message.start_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.end_time, () => message.end_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 3:
                    message.operation_state = reader.readEnum();
                    break;
                case 4:
                    reader.readMessage(message.progress_documents, () => message.progress_documents = Progress.deserialize(reader));
                    break;
                case 5:
                    reader.readMessage(message.progress_bytes, () => message.progress_bytes = Progress.deserialize(reader));
                    break;
                case 6:
                    pb_1.Message.addToRepeatedField(message, 6, reader.readString());
                    break;
                case 7:
                    pb_1.Message.addToRepeatedField(message, 7, reader.readString());
                    break;
                case 8:
                    reader.readMessage(message.snapshot_time, () => message.snapshot_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BulkDeleteDocumentsMetadata {
        return BulkDeleteDocumentsMetadata.deserialize(bytes);
    }
}
export class ExportDocumentsResponse extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        output_uri_prefix?: 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 ("output_uri_prefix" in data && data.output_uri_prefix != undefined) {
                this.output_uri_prefix = data.output_uri_prefix;
            }
        }
    }
    get output_uri_prefix() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set output_uri_prefix(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    static fromObject(data: {
        output_uri_prefix?: string;
    }): ExportDocumentsResponse {
        const message = new ExportDocumentsResponse({});
        if (data.output_uri_prefix != null) {
            message.output_uri_prefix = data.output_uri_prefix;
        }
        return message;
    }
    toObject() {
        const data: {
            output_uri_prefix?: string;
        } = {};
        if (this.output_uri_prefix != null) {
            data.output_uri_prefix = this.output_uri_prefix;
        }
        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.output_uri_prefix.length)
            writer.writeString(1, this.output_uri_prefix);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ExportDocumentsResponse {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ExportDocumentsResponse();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.output_uri_prefix = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ExportDocumentsResponse {
        return ExportDocumentsResponse.deserialize(bytes);
    }
}
export class RestoreDatabaseMetadata extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        start_time?: dependency_3.Timestamp;
        end_time?: dependency_3.Timestamp;
        operation_state?: OperationState;
        database?: string;
        backup?: string;
        progress_percentage?: Progress;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("start_time" in data && data.start_time != undefined) {
                this.start_time = data.start_time;
            }
            if ("end_time" in data && data.end_time != undefined) {
                this.end_time = data.end_time;
            }
            if ("operation_state" in data && data.operation_state != undefined) {
                this.operation_state = data.operation_state;
            }
            if ("database" in data && data.database != undefined) {
                this.database = data.database;
            }
            if ("backup" in data && data.backup != undefined) {
                this.backup = data.backup;
            }
            if ("progress_percentage" in data && data.progress_percentage != undefined) {
                this.progress_percentage = data.progress_percentage;
            }
        }
    }
    get start_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 1) as dependency_3.Timestamp;
    }
    set start_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_start_time() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get end_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 2) as dependency_3.Timestamp;
    }
    set end_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_end_time() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get operation_state() {
        return pb_1.Message.getFieldWithDefault(this, 3, OperationState.OPERATION_STATE_UNSPECIFIED) as OperationState;
    }
    set operation_state(value: OperationState) {
        pb_1.Message.setField(this, 3, value);
    }
    get database() {
        return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
    }
    set database(value: string) {
        pb_1.Message.setField(this, 4, value);
    }
    get backup() {
        return pb_1.Message.getFieldWithDefault(this, 5, "") as string;
    }
    set backup(value: string) {
        pb_1.Message.setField(this, 5, value);
    }
    get progress_percentage() {
        return pb_1.Message.getWrapperField(this, Progress, 8) as Progress;
    }
    set progress_percentage(value: Progress) {
        pb_1.Message.setWrapperField(this, 8, value);
    }
    get has_progress_percentage() {
        return pb_1.Message.getField(this, 8) != null;
    }
    static fromObject(data: {
        start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        operation_state?: OperationState;
        database?: string;
        backup?: string;
        progress_percentage?: ReturnType<typeof Progress.prototype.toObject>;
    }): RestoreDatabaseMetadata {
        const message = new RestoreDatabaseMetadata({});
        if (data.start_time != null) {
            message.start_time = dependency_3.Timestamp.fromObject(data.start_time);
        }
        if (data.end_time != null) {
            message.end_time = dependency_3.Timestamp.fromObject(data.end_time);
        }
        if (data.operation_state != null) {
            message.operation_state = data.operation_state;
        }
        if (data.database != null) {
            message.database = data.database;
        }
        if (data.backup != null) {
            message.backup = data.backup;
        }
        if (data.progress_percentage != null) {
            message.progress_percentage = Progress.fromObject(data.progress_percentage);
        }
        return message;
    }
    toObject() {
        const data: {
            start_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            end_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            operation_state?: OperationState;
            database?: string;
            backup?: string;
            progress_percentage?: ReturnType<typeof Progress.prototype.toObject>;
        } = {};
        if (this.start_time != null) {
            data.start_time = this.start_time.toObject();
        }
        if (this.end_time != null) {
            data.end_time = this.end_time.toObject();
        }
        if (this.operation_state != null) {
            data.operation_state = this.operation_state;
        }
        if (this.database != null) {
            data.database = this.database;
        }
        if (this.backup != null) {
            data.backup = this.backup;
        }
        if (this.progress_percentage != null) {
            data.progress_percentage = this.progress_percentage.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_start_time)
            writer.writeMessage(1, this.start_time, () => this.start_time.serialize(writer));
        if (this.has_end_time)
            writer.writeMessage(2, this.end_time, () => this.end_time.serialize(writer));
        if (this.operation_state != OperationState.OPERATION_STATE_UNSPECIFIED)
            writer.writeEnum(3, this.operation_state);
        if (this.database.length)
            writer.writeString(4, this.database);
        if (this.backup.length)
            writer.writeString(5, this.backup);
        if (this.has_progress_percentage)
            writer.writeMessage(8, this.progress_percentage, () => this.progress_percentage.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): RestoreDatabaseMetadata {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new RestoreDatabaseMetadata();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.start_time, () => message.start_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.end_time, () => message.end_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 3:
                    message.operation_state = reader.readEnum();
                    break;
                case 4:
                    message.database = reader.readString();
                    break;
                case 5:
                    message.backup = reader.readString();
                    break;
                case 8:
                    reader.readMessage(message.progress_percentage, () => message.progress_percentage = Progress.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): RestoreDatabaseMetadata {
        return RestoreDatabaseMetadata.deserialize(bytes);
    }
}
export class Progress extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        estimated_work?: number;
        completed_work?: 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 ("estimated_work" in data && data.estimated_work != undefined) {
                this.estimated_work = data.estimated_work;
            }
            if ("completed_work" in data && data.completed_work != undefined) {
                this.completed_work = data.completed_work;
            }
        }
    }
    get estimated_work() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set estimated_work(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get completed_work() {
        return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
    }
    set completed_work(value: number) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        estimated_work?: number;
        completed_work?: number;
    }): Progress {
        const message = new Progress({});
        if (data.estimated_work != null) {
            message.estimated_work = data.estimated_work;
        }
        if (data.completed_work != null) {
            message.completed_work = data.completed_work;
        }
        return message;
    }
    toObject() {
        const data: {
            estimated_work?: number;
            completed_work?: number;
        } = {};
        if (this.estimated_work != null) {
            data.estimated_work = this.estimated_work;
        }
        if (this.completed_work != null) {
            data.completed_work = this.completed_work;
        }
        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.estimated_work != 0)
            writer.writeInt64(1, this.estimated_work);
        if (this.completed_work != 0)
            writer.writeInt64(2, this.completed_work);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Progress {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Progress();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.estimated_work = reader.readInt64();
                    break;
                case 2:
                    message.completed_work = reader.readInt64();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Progress {
        return Progress.deserialize(bytes);
    }
}
