/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: google/firestore/v1beta1/undeliverable_first_gen_event.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../../protobuf/timestamp";
import * as pb_1 from "google-protobuf";
export class UndeliverableFirstGenEvent extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        message?: string;
        reason?: UndeliverableFirstGenEventReason;
        document_name?: string;
        document_change_type?: UndeliverableFirstGenEventDocumentChangeType;
        function_name?: string[];
        triggered_time?: dependency_1.Timestamp;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [5], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("message" in data && data.message != undefined) {
                this.message = data.message;
            }
            if ("reason" in data && data.reason != undefined) {
                this.reason = data.reason;
            }
            if ("document_name" in data && data.document_name != undefined) {
                this.document_name = data.document_name;
            }
            if ("document_change_type" in data && data.document_change_type != undefined) {
                this.document_change_type = data.document_change_type;
            }
            if ("function_name" in data && data.function_name != undefined) {
                this.function_name = data.function_name;
            }
            if ("triggered_time" in data && data.triggered_time != undefined) {
                this.triggered_time = data.triggered_time;
            }
        }
    }
    get message() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set message(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get reason() {
        return pb_1.Message.getFieldWithDefault(this, 2, UndeliverableFirstGenEventReason.REASON_UNSPECIFIED) as UndeliverableFirstGenEventReason;
    }
    set reason(value: UndeliverableFirstGenEventReason) {
        pb_1.Message.setField(this, 2, value);
    }
    get document_name() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set document_name(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get document_change_type() {
        return pb_1.Message.getFieldWithDefault(this, 4, UndeliverableFirstGenEventDocumentChangeType.DOCUMENT_CHANGE_TYPE_UNSPECIFIED) as UndeliverableFirstGenEventDocumentChangeType;
    }
    set document_change_type(value: UndeliverableFirstGenEventDocumentChangeType) {
        pb_1.Message.setField(this, 4, value);
    }
    get function_name() {
        return pb_1.Message.getFieldWithDefault(this, 5, []) as string[];
    }
    set function_name(value: string[]) {
        pb_1.Message.setField(this, 5, value);
    }
    get triggered_time() {
        return pb_1.Message.getWrapperField(this, dependency_1.Timestamp, 6) as dependency_1.Timestamp;
    }
    set triggered_time(value: dependency_1.Timestamp) {
        pb_1.Message.setWrapperField(this, 6, value);
    }
    get has_triggered_time() {
        return pb_1.Message.getField(this, 6) != null;
    }
    static fromObject(data: {
        message?: string;
        reason?: UndeliverableFirstGenEventReason;
        document_name?: string;
        document_change_type?: UndeliverableFirstGenEventDocumentChangeType;
        function_name?: string[];
        triggered_time?: ReturnType<typeof dependency_1.Timestamp.prototype.toObject>;
    }): UndeliverableFirstGenEvent {
        const message = new UndeliverableFirstGenEvent({});
        if (data.message != null) {
            message.message = data.message;
        }
        if (data.reason != null) {
            message.reason = data.reason;
        }
        if (data.document_name != null) {
            message.document_name = data.document_name;
        }
        if (data.document_change_type != null) {
            message.document_change_type = data.document_change_type;
        }
        if (data.function_name != null) {
            message.function_name = data.function_name;
        }
        if (data.triggered_time != null) {
            message.triggered_time = dependency_1.Timestamp.fromObject(data.triggered_time);
        }
        return message;
    }
    toObject() {
        const data: {
            message?: string;
            reason?: UndeliverableFirstGenEventReason;
            document_name?: string;
            document_change_type?: UndeliverableFirstGenEventDocumentChangeType;
            function_name?: string[];
            triggered_time?: ReturnType<typeof dependency_1.Timestamp.prototype.toObject>;
        } = {};
        if (this.message != null) {
            data.message = this.message;
        }
        if (this.reason != null) {
            data.reason = this.reason;
        }
        if (this.document_name != null) {
            data.document_name = this.document_name;
        }
        if (this.document_change_type != null) {
            data.document_change_type = this.document_change_type;
        }
        if (this.function_name != null) {
            data.function_name = this.function_name;
        }
        if (this.triggered_time != null) {
            data.triggered_time = this.triggered_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.message.length)
            writer.writeString(1, this.message);
        if (this.reason != UndeliverableFirstGenEventReason.REASON_UNSPECIFIED)
            writer.writeEnum(2, this.reason);
        if (this.document_name.length)
            writer.writeString(3, this.document_name);
        if (this.document_change_type != UndeliverableFirstGenEventDocumentChangeType.DOCUMENT_CHANGE_TYPE_UNSPECIFIED)
            writer.writeEnum(4, this.document_change_type);
        if (this.function_name.length)
            writer.writeRepeatedString(5, this.function_name);
        if (this.has_triggered_time)
            writer.writeMessage(6, this.triggered_time, () => this.triggered_time.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): UndeliverableFirstGenEvent {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new UndeliverableFirstGenEvent();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.message = reader.readString();
                    break;
                case 2:
                    message.reason = reader.readEnum();
                    break;
                case 3:
                    message.document_name = reader.readString();
                    break;
                case 4:
                    message.document_change_type = reader.readEnum();
                    break;
                case 5:
                    pb_1.Message.addToRepeatedField(message, 5, reader.readString());
                    break;
                case 6:
                    reader.readMessage(message.triggered_time, () => message.triggered_time = dependency_1.Timestamp.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): UndeliverableFirstGenEvent {
        return UndeliverableFirstGenEvent.deserialize(bytes);
    }
}
export enum UndeliverableFirstGenEventReason {
    REASON_UNSPECIFIED = 0,
    EXCEEDING_SIZE_LIMIT = 1
}
export enum UndeliverableFirstGenEventDocumentChangeType {
    DOCUMENT_CHANGE_TYPE_UNSPECIFIED = 0,
    CREATE = 1,
    DELETE = 2,
    UPDATE = 3
}
