/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: google/firestore/admin/v1/field.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 "./index";
import * as pb_1 from "google-protobuf";
export class Field extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
        index_config?: FieldIndexConfig;
        ttl_config?: FieldTtlConfig;
    }) {
        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 ("index_config" in data && data.index_config != undefined) {
                this.index_config = data.index_config;
            }
            if ("ttl_config" in data && data.ttl_config != undefined) {
                this.ttl_config = data.ttl_config;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get index_config() {
        return pb_1.Message.getWrapperField(this, FieldIndexConfig, 2) as FieldIndexConfig;
    }
    set index_config(value: FieldIndexConfig) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_index_config() {
        return pb_1.Message.getField(this, 2) != null;
    }
    get ttl_config() {
        return pb_1.Message.getWrapperField(this, FieldTtlConfig, 3) as FieldTtlConfig;
    }
    set ttl_config(value: FieldTtlConfig) {
        pb_1.Message.setWrapperField(this, 3, value);
    }
    get has_ttl_config() {
        return pb_1.Message.getField(this, 3) != null;
    }
    static fromObject(data: {
        name?: string;
        index_config?: ReturnType<typeof FieldIndexConfig.prototype.toObject>;
        ttl_config?: ReturnType<typeof FieldTtlConfig.prototype.toObject>;
    }): Field {
        const message = new Field({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.index_config != null) {
            message.index_config = FieldIndexConfig.fromObject(data.index_config);
        }
        if (data.ttl_config != null) {
            message.ttl_config = FieldTtlConfig.fromObject(data.ttl_config);
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            index_config?: ReturnType<typeof FieldIndexConfig.prototype.toObject>;
            ttl_config?: ReturnType<typeof FieldTtlConfig.prototype.toObject>;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.index_config != null) {
            data.index_config = this.index_config.toObject();
        }
        if (this.ttl_config != null) {
            data.ttl_config = this.ttl_config.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_index_config)
            writer.writeMessage(2, this.index_config, () => this.index_config.serialize(writer));
        if (this.has_ttl_config)
            writer.writeMessage(3, this.ttl_config, () => this.ttl_config.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Field {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Field();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 2:
                    reader.readMessage(message.index_config, () => message.index_config = FieldIndexConfig.deserialize(reader));
                    break;
                case 3:
                    reader.readMessage(message.ttl_config, () => message.ttl_config = FieldTtlConfig.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Field {
        return Field.deserialize(bytes);
    }
}
export class FieldIndexConfig extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        indexes?: dependency_3.Index[];
        uses_ancestor_config?: boolean;
        ancestor_field?: string;
        reverting?: boolean;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("indexes" in data && data.indexes != undefined) {
                this.indexes = data.indexes;
            }
            if ("uses_ancestor_config" in data && data.uses_ancestor_config != undefined) {
                this.uses_ancestor_config = data.uses_ancestor_config;
            }
            if ("ancestor_field" in data && data.ancestor_field != undefined) {
                this.ancestor_field = data.ancestor_field;
            }
            if ("reverting" in data && data.reverting != undefined) {
                this.reverting = data.reverting;
            }
        }
    }
    get indexes() {
        return pb_1.Message.getRepeatedWrapperField(this, dependency_3.Index, 1) as dependency_3.Index[];
    }
    set indexes(value: dependency_3.Index[]) {
        pb_1.Message.setRepeatedWrapperField(this, 1, value);
    }
    get uses_ancestor_config() {
        return pb_1.Message.getFieldWithDefault(this, 2, false) as boolean;
    }
    set uses_ancestor_config(value: boolean) {
        pb_1.Message.setField(this, 2, value);
    }
    get ancestor_field() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set ancestor_field(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get reverting() {
        return pb_1.Message.getFieldWithDefault(this, 4, false) as boolean;
    }
    set reverting(value: boolean) {
        pb_1.Message.setField(this, 4, value);
    }
    static fromObject(data: {
        indexes?: ReturnType<typeof dependency_3.Index.prototype.toObject>[];
        uses_ancestor_config?: boolean;
        ancestor_field?: string;
        reverting?: boolean;
    }): FieldIndexConfig {
        const message = new FieldIndexConfig({});
        if (data.indexes != null) {
            message.indexes = data.indexes.map(item => dependency_3.Index.fromObject(item));
        }
        if (data.uses_ancestor_config != null) {
            message.uses_ancestor_config = data.uses_ancestor_config;
        }
        if (data.ancestor_field != null) {
            message.ancestor_field = data.ancestor_field;
        }
        if (data.reverting != null) {
            message.reverting = data.reverting;
        }
        return message;
    }
    toObject() {
        const data: {
            indexes?: ReturnType<typeof dependency_3.Index.prototype.toObject>[];
            uses_ancestor_config?: boolean;
            ancestor_field?: string;
            reverting?: boolean;
        } = {};
        if (this.indexes != null) {
            data.indexes = this.indexes.map((item: dependency_3.Index) => item.toObject());
        }
        if (this.uses_ancestor_config != null) {
            data.uses_ancestor_config = this.uses_ancestor_config;
        }
        if (this.ancestor_field != null) {
            data.ancestor_field = this.ancestor_field;
        }
        if (this.reverting != null) {
            data.reverting = this.reverting;
        }
        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.indexes.length)
            writer.writeRepeatedMessage(1, this.indexes, (item: dependency_3.Index) => item.serialize(writer));
        if (this.uses_ancestor_config != false)
            writer.writeBool(2, this.uses_ancestor_config);
        if (this.ancestor_field.length)
            writer.writeString(3, this.ancestor_field);
        if (this.reverting != false)
            writer.writeBool(4, this.reverting);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FieldIndexConfig {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FieldIndexConfig();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.indexes, () => pb_1.Message.addToRepeatedWrapperField(message, 1, dependency_3.Index.deserialize(reader), dependency_3.Index));
                    break;
                case 2:
                    message.uses_ancestor_config = reader.readBool();
                    break;
                case 3:
                    message.ancestor_field = reader.readString();
                    break;
                case 4:
                    message.reverting = reader.readBool();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): FieldIndexConfig {
        return FieldIndexConfig.deserialize(bytes);
    }
}
export class FieldTtlConfig extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        state?: FieldTtlConfigState;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("state" in data && data.state != undefined) {
                this.state = data.state;
            }
        }
    }
    get state() {
        return pb_1.Message.getFieldWithDefault(this, 1, FieldTtlConfigState.STATE_UNSPECIFIED) as FieldTtlConfigState;
    }
    set state(value: FieldTtlConfigState) {
        pb_1.Message.setField(this, 1, value);
    }
    static fromObject(data: {
        state?: FieldTtlConfigState;
    }): FieldTtlConfig {
        const message = new FieldTtlConfig({});
        if (data.state != null) {
            message.state = data.state;
        }
        return message;
    }
    toObject() {
        const data: {
            state?: FieldTtlConfigState;
        } = {};
        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.state != FieldTtlConfigState.STATE_UNSPECIFIED)
            writer.writeEnum(1, this.state);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FieldTtlConfig {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FieldTtlConfig();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.state = reader.readEnum();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): FieldTtlConfig {
        return FieldTtlConfig.deserialize(bytes);
    }
}
export enum FieldTtlConfigState {
    STATE_UNSPECIFIED = 0,
    CREATING = 1,
    ACTIVE = 2,
    NEEDS_REPAIR = 3
}
