/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: google/firestore/admin/v1/backup.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/timestamp";
import * as pb_1 from "google-protobuf";
export class Backup extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
        database?: string;
        database_uid?: string;
        snapshot_time?: dependency_3.Timestamp;
        expire_time?: dependency_3.Timestamp;
        stats?: BackupStats;
        state?: BackupState;
    }) {
        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 ("database" in data && data.database != undefined) {
                this.database = data.database;
            }
            if ("database_uid" in data && data.database_uid != undefined) {
                this.database_uid = data.database_uid;
            }
            if ("snapshot_time" in data && data.snapshot_time != undefined) {
                this.snapshot_time = data.snapshot_time;
            }
            if ("expire_time" in data && data.expire_time != undefined) {
                this.expire_time = data.expire_time;
            }
            if ("stats" in data && data.stats != undefined) {
                this.stats = data.stats;
            }
            if ("state" in data && data.state != undefined) {
                this.state = data.state;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get database() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set database(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get database_uid() {
        return pb_1.Message.getFieldWithDefault(this, 7, "") as string;
    }
    set database_uid(value: string) {
        pb_1.Message.setField(this, 7, value);
    }
    get snapshot_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 3) as dependency_3.Timestamp;
    }
    set snapshot_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 3, value);
    }
    get has_snapshot_time() {
        return pb_1.Message.getField(this, 3) != null;
    }
    get expire_time() {
        return pb_1.Message.getWrapperField(this, dependency_3.Timestamp, 4) as dependency_3.Timestamp;
    }
    set expire_time(value: dependency_3.Timestamp) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_expire_time() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get stats() {
        return pb_1.Message.getWrapperField(this, BackupStats, 6) as BackupStats;
    }
    set stats(value: BackupStats) {
        pb_1.Message.setWrapperField(this, 6, value);
    }
    get has_stats() {
        return pb_1.Message.getField(this, 6) != null;
    }
    get state() {
        return pb_1.Message.getFieldWithDefault(this, 8, BackupState.STATE_UNSPECIFIED) as BackupState;
    }
    set state(value: BackupState) {
        pb_1.Message.setField(this, 8, value);
    }
    static fromObject(data: {
        name?: string;
        database?: string;
        database_uid?: string;
        snapshot_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        expire_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
        stats?: ReturnType<typeof BackupStats.prototype.toObject>;
        state?: BackupState;
    }): Backup {
        const message = new Backup({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.database != null) {
            message.database = data.database;
        }
        if (data.database_uid != null) {
            message.database_uid = data.database_uid;
        }
        if (data.snapshot_time != null) {
            message.snapshot_time = dependency_3.Timestamp.fromObject(data.snapshot_time);
        }
        if (data.expire_time != null) {
            message.expire_time = dependency_3.Timestamp.fromObject(data.expire_time);
        }
        if (data.stats != null) {
            message.stats = BackupStats.fromObject(data.stats);
        }
        if (data.state != null) {
            message.state = data.state;
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            database?: string;
            database_uid?: string;
            snapshot_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            expire_time?: ReturnType<typeof dependency_3.Timestamp.prototype.toObject>;
            stats?: ReturnType<typeof BackupStats.prototype.toObject>;
            state?: BackupState;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.database != null) {
            data.database = this.database;
        }
        if (this.database_uid != null) {
            data.database_uid = this.database_uid;
        }
        if (this.snapshot_time != null) {
            data.snapshot_time = this.snapshot_time.toObject();
        }
        if (this.expire_time != null) {
            data.expire_time = this.expire_time.toObject();
        }
        if (this.stats != null) {
            data.stats = this.stats.toObject();
        }
        if (this.state != null) {
            data.state = this.state;
        }
        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.database.length)
            writer.writeString(2, this.database);
        if (this.database_uid.length)
            writer.writeString(7, this.database_uid);
        if (this.has_snapshot_time)
            writer.writeMessage(3, this.snapshot_time, () => this.snapshot_time.serialize(writer));
        if (this.has_expire_time)
            writer.writeMessage(4, this.expire_time, () => this.expire_time.serialize(writer));
        if (this.has_stats)
            writer.writeMessage(6, this.stats, () => this.stats.serialize(writer));
        if (this.state != BackupState.STATE_UNSPECIFIED)
            writer.writeEnum(8, this.state);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Backup {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Backup();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 2:
                    message.database = reader.readString();
                    break;
                case 7:
                    message.database_uid = reader.readString();
                    break;
                case 3:
                    reader.readMessage(message.snapshot_time, () => message.snapshot_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 4:
                    reader.readMessage(message.expire_time, () => message.expire_time = dependency_3.Timestamp.deserialize(reader));
                    break;
                case 6:
                    reader.readMessage(message.stats, () => message.stats = BackupStats.deserialize(reader));
                    break;
                case 8:
                    message.state = reader.readEnum();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Backup {
        return Backup.deserialize(bytes);
    }
}
export enum BackupState {
    STATE_UNSPECIFIED = 0,
    CREATING = 1,
    READY = 2,
    NOT_AVAILABLE = 3
}
export class BackupStats extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        size_bytes?: number;
        document_count?: number;
        index_count?: 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 ("size_bytes" in data && data.size_bytes != undefined) {
                this.size_bytes = data.size_bytes;
            }
            if ("document_count" in data && data.document_count != undefined) {
                this.document_count = data.document_count;
            }
            if ("index_count" in data && data.index_count != undefined) {
                this.index_count = data.index_count;
            }
        }
    }
    get size_bytes() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set size_bytes(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get document_count() {
        return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
    }
    set document_count(value: number) {
        pb_1.Message.setField(this, 2, value);
    }
    get index_count() {
        return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
    }
    set index_count(value: number) {
        pb_1.Message.setField(this, 3, value);
    }
    static fromObject(data: {
        size_bytes?: number;
        document_count?: number;
        index_count?: number;
    }): BackupStats {
        const message = new BackupStats({});
        if (data.size_bytes != null) {
            message.size_bytes = data.size_bytes;
        }
        if (data.document_count != null) {
            message.document_count = data.document_count;
        }
        if (data.index_count != null) {
            message.index_count = data.index_count;
        }
        return message;
    }
    toObject() {
        const data: {
            size_bytes?: number;
            document_count?: number;
            index_count?: number;
        } = {};
        if (this.size_bytes != null) {
            data.size_bytes = this.size_bytes;
        }
        if (this.document_count != null) {
            data.document_count = this.document_count;
        }
        if (this.index_count != null) {
            data.index_count = this.index_count;
        }
        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.size_bytes != 0)
            writer.writeInt64(1, this.size_bytes);
        if (this.document_count != 0)
            writer.writeInt64(2, this.document_count);
        if (this.index_count != 0)
            writer.writeInt64(3, this.index_count);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): BackupStats {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new BackupStats();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.size_bytes = reader.readInt64();
                    break;
                case 2:
                    message.document_count = reader.readInt64();
                    break;
                case 3:
                    message.index_count = reader.readInt64();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): BackupStats {
        return BackupStats.deserialize(bytes);
    }
}
