/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: google/firestore/admin/v1/schedule.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./../../../api/field_behavior";
import * as dependency_2 from "./../../../api/resource";
import * as dependency_3 from "./../../../protobuf/duration";
import * as dependency_4 from "./../../../protobuf/timestamp";
import * as dependency_5 from "./../../../type/dayofweek";
import * as pb_1 from "google-protobuf";
export class BackupSchedule extends pb_1.Message {
    #one_of_decls: number[][] = [[7, 8]];
    constructor(data?: any[] | ({
        name?: string;
        create_time?: dependency_4.Timestamp;
        update_time?: dependency_4.Timestamp;
        retention?: dependency_3.Duration;
    } & (({
        daily_recurrence?: DailyRecurrence;
        weekly_recurrence?: never;
    } | {
        daily_recurrence?: never;
        weekly_recurrence?: WeeklyRecurrence;
    })))) {
        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 ("create_time" in data && data.create_time != undefined) {
                this.create_time = data.create_time;
            }
            if ("update_time" in data && data.update_time != undefined) {
                this.update_time = data.update_time;
            }
            if ("retention" in data && data.retention != undefined) {
                this.retention = data.retention;
            }
            if ("daily_recurrence" in data && data.daily_recurrence != undefined) {
                this.daily_recurrence = data.daily_recurrence;
            }
            if ("weekly_recurrence" in data && data.weekly_recurrence != undefined) {
                this.weekly_recurrence = data.weekly_recurrence;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get create_time() {
        return pb_1.Message.getWrapperField(this, dependency_4.Timestamp, 3) as dependency_4.Timestamp;
    }
    set create_time(value: dependency_4.Timestamp) {
        pb_1.Message.setWrapperField(this, 3, value);
    }
    get has_create_time() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get update_time() {
        return pb_1.Message.getWrapperField(this, dependency_4.Timestamp, 10) as dependency_4.Timestamp;
    }
    set update_time(value: dependency_4.Timestamp) {
        pb_1.Message.setWrapperField(this, 10, value);
    }
    get has_update_time() {
        return pb_1.Message.getField(this, 10) != null;
    }
    get retention() {
        return pb_1.Message.getWrapperField(this, dependency_3.Duration, 6) as dependency_3.Duration;
    }
    set retention(value: dependency_3.Duration) {
        pb_1.Message.setWrapperField(this, 6, value);
    }
    get has_retention() {
        return pb_1.Message.getField(this, 6) != null;
    }
    get daily_recurrence() {
        return pb_1.Message.getWrapperField(this, DailyRecurrence, 7) as DailyRecurrence;
    }
    set daily_recurrence(value: DailyRecurrence) {
        pb_1.Message.setOneofWrapperField(this, 7, this.#one_of_decls[0], value);
    }
    get has_daily_recurrence() {
        return pb_1.Message.getField(this, 7) != null;
    }
    get weekly_recurrence() {
        return pb_1.Message.getWrapperField(this, WeeklyRecurrence, 8) as WeeklyRecurrence;
    }
    set weekly_recurrence(value: WeeklyRecurrence) {
        pb_1.Message.setOneofWrapperField(this, 8, this.#one_of_decls[0], value);
    }
    get has_weekly_recurrence() {
        return pb_1.Message.getField(this, 8) != null;
    }
    get recurrence() {
        const cases: {
            [index: number]: "none" | "daily_recurrence" | "weekly_recurrence";
        } = {
            0: "none",
            7: "daily_recurrence",
            8: "weekly_recurrence"
        };
        return cases[pb_1.Message.computeOneofCase(this, [7, 8])];
    }
    static fromObject(data: {
        name?: string;
        create_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
        update_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
        retention?: ReturnType<typeof dependency_3.Duration.prototype.toObject>;
        daily_recurrence?: ReturnType<typeof DailyRecurrence.prototype.toObject>;
        weekly_recurrence?: ReturnType<typeof WeeklyRecurrence.prototype.toObject>;
    }): BackupSchedule {
        const message = new BackupSchedule({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.create_time != null) {
            message.create_time = dependency_4.Timestamp.fromObject(data.create_time);
        }
        if (data.update_time != null) {
            message.update_time = dependency_4.Timestamp.fromObject(data.update_time);
        }
        if (data.retention != null) {
            message.retention = dependency_3.Duration.fromObject(data.retention);
        }
        if (data.daily_recurrence != null) {
            message.daily_recurrence = DailyRecurrence.fromObject(data.daily_recurrence);
        }
        if (data.weekly_recurrence != null) {
            message.weekly_recurrence = WeeklyRecurrence.fromObject(data.weekly_recurrence);
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            create_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
            update_time?: ReturnType<typeof dependency_4.Timestamp.prototype.toObject>;
            retention?: ReturnType<typeof dependency_3.Duration.prototype.toObject>;
            daily_recurrence?: ReturnType<typeof DailyRecurrence.prototype.toObject>;
            weekly_recurrence?: ReturnType<typeof WeeklyRecurrence.prototype.toObject>;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.create_time != null) {
            data.create_time = this.create_time.toObject();
        }
        if (this.update_time != null) {
            data.update_time = this.update_time.toObject();
        }
        if (this.retention != null) {
            data.retention = this.retention.toObject();
        }
        if (this.daily_recurrence != null) {
            data.daily_recurrence = this.daily_recurrence.toObject();
        }
        if (this.weekly_recurrence != null) {
            data.weekly_recurrence = this.weekly_recurrence.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_create_time)
            writer.writeMessage(3, this.create_time, () => this.create_time.serialize(writer));
        if (this.has_update_time)
            writer.writeMessage(10, this.update_time, () => this.update_time.serialize(writer));
        if (this.has_retention)
            writer.writeMessage(6, this.retention, () => this.retention.serialize(writer));
        if (this.has_daily_recurrence)
            writer.writeMessage(7, this.daily_recurrence, () => this.daily_recurrence.serialize(writer));
        if (this.has_weekly_recurrence)
            writer.writeMessage(8, this.weekly_recurrence, () => this.weekly_recurrence.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BackupSchedule {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BackupSchedule();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 3:
                    reader.readMessage(message.create_time, () => message.create_time = dependency_4.Timestamp.deserialize(reader));
                    break;
                case 10:
                    reader.readMessage(message.update_time, () => message.update_time = dependency_4.Timestamp.deserialize(reader));
                    break;
                case 6:
                    reader.readMessage(message.retention, () => message.retention = dependency_3.Duration.deserialize(reader));
                    break;
                case 7:
                    reader.readMessage(message.daily_recurrence, () => message.daily_recurrence = DailyRecurrence.deserialize(reader));
                    break;
                case 8:
                    reader.readMessage(message.weekly_recurrence, () => message.weekly_recurrence = WeeklyRecurrence.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BackupSchedule {
        return BackupSchedule.deserialize(bytes);
    }
}
export class DailyRecurrence extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {}) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") { }
    }
    static fromObject(data: {}): DailyRecurrence {
        const message = new DailyRecurrence({});
        return message;
    }
    toObject() {
        const data: {} = {};
        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 (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DailyRecurrence {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DailyRecurrence();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DailyRecurrence {
        return DailyRecurrence.deserialize(bytes);
    }
}
export class WeeklyRecurrence extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        day?: dependency_5.DayOfWeek;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("day" in data && data.day != undefined) {
                this.day = data.day;
            }
        }
    }
    get day() {
        return pb_1.Message.getFieldWithDefault(this, 2, dependency_5.DayOfWeek.DAY_OF_WEEK_UNSPECIFIED) as dependency_5.DayOfWeek;
    }
    set day(value: dependency_5.DayOfWeek) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        day?: dependency_5.DayOfWeek;
    }): WeeklyRecurrence {
        const message = new WeeklyRecurrence({});
        if (data.day != null) {
            message.day = data.day;
        }
        return message;
    }
    toObject() {
        const data: {
            day?: dependency_5.DayOfWeek;
        } = {};
        if (this.day != null) {
            data.day = this.day;
        }
        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.day != dependency_5.DayOfWeek.DAY_OF_WEEK_UNSPECIFIED)
            writer.writeEnum(2, this.day);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): WeeklyRecurrence {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new WeeklyRecurrence();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 2:
                    message.day = reader.readEnum();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): WeeklyRecurrence {
        return WeeklyRecurrence.deserialize(bytes);
    }
}
