/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.1
 * source: google/firestore/v1/aggregation_result.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as dependency_1 from "./document";
import * as pb_1 from "google-protobuf";
export class AggregationResult extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        aggregate_fields?: Map<string, dependency_1.Value>;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("aggregate_fields" in data && data.aggregate_fields != undefined) {
                this.aggregate_fields = data.aggregate_fields;
            }
        }
        if (!this.aggregate_fields)
            this.aggregate_fields = new Map();
    }
    get aggregate_fields() {
        return pb_1.Message.getField(this, 2) as any as Map<string, dependency_1.Value>;
    }
    set aggregate_fields(value: Map<string, dependency_1.Value>) {
        pb_1.Message.setField(this, 2, value as any);
    }
    static fromObject(data: {
        aggregate_fields?: {
            [key: string]: ReturnType<typeof dependency_1.Value.prototype.toObject>;
        };
    }): AggregationResult {
        const message = new AggregationResult({});
        if (typeof data.aggregate_fields == "object") {
            message.aggregate_fields = new Map(Object.entries(data.aggregate_fields).map(([key, value]) => [key, dependency_1.Value.fromObject(value)]));
        }
        return message;
    }
    toObject() {
        const data: {
            aggregate_fields?: {
                [key: string]: ReturnType<typeof dependency_1.Value.prototype.toObject>;
            };
        } = {};
        if (this.aggregate_fields != null) {
            data.aggregate_fields = (Object.fromEntries)((Array.from)(this.aggregate_fields).map(([key, value]) => [key, value.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();
        for (const [key, value] of this.aggregate_fields) {
            writer.writeMessage(2, this.aggregate_fields, () => {
                writer.writeString(1, key);
                writer.writeMessage(2, value, () => value.serialize(writer));
            });
        }
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): AggregationResult {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new AggregationResult();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 2:
                    reader.readMessage(message, () => pb_1.Map.deserializeBinary(message.aggregate_fields as any, reader, reader.readString, () => {
                        let value;
                        reader.readMessage(message, () => value = dependency_1.Value.deserialize(reader));
                        return value;
                    }));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): AggregationResult {
        return AggregationResult.deserialize(bytes);
    }
}
