// @generated by protobuf-ts 2.9.6
// @generated from protobuf file "collabShared.proto" (package "api", syntax proto3)
// tslint:disable
import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import { WireType } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import { UnknownFieldHandler } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { reflectionMergePartial } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { Struct } from "./google/protobuf/struct";
import { DateTime } from "./shared";
import { ClaimStatus } from "./shared";
// 
// This files contains domain objects

/**
 * @generated from protobuf message api.ClaimStatusDef
 */
export interface ClaimStatusDef {
    /**
     * @generated from protobuf field: api.ClaimStatus StatusCode = 1 [json_name = "StatusCode"];
     */
    statusCode: ClaimStatus;
    /**
     * This date is only a string as it is always given by system
     *
     * @generated from protobuf field: string Date = 2 [json_name = "Date"];
     */
    date: string;
    /**
     * Status effective date. Set by the event's RefDate that triggered the status change.
     *
     * @generated from protobuf field: api.DateTime ActualDate = 3 [json_name = "ActualDate"];
     */
    actualDate?: DateTime;
}
/**
 * @generated from protobuf message api.ClaimStatusStruct
 */
export interface ClaimStatusStruct {
    /**
     * @generated from protobuf field: api.ClaimStatusDef Current = 1 [json_name = "Current"];
     */
    current?: ClaimStatusDef; // Current status of the Claim entity
    /**
     * @generated from protobuf field: repeated api.ClaimStatusDef History = 2 [json_name = "History"];
     */
    history: ClaimStatusDef[]; // List of all status history of the Claim entity
    /**
     * @generated from protobuf field: string CreationDate = 3 [json_name = "CreationDate"];
     */
    creationDate: string;
    /**
     * @generated from protobuf field: uint32 Version = 4 [json_name = "Version"];
     */
    version: number;
}
/**
 * @generated from protobuf message api.WindowedNotif
 */
export interface WindowedNotif {
    /**
     * @generated from protobuf field: api.ListNotifChanges ListNotifChanges = 1 [json_name = "ListNotifChanges"];
     */
    listNotifChanges?: ListNotifChanges;
    /**
     * @generated from protobuf field: repeated api.UserMails UserMails = 2 [json_name = "UserMails"];
     */
    userMails: UserMails[];
    /**
     * @generated from protobuf field: string JsonModel = 3 [json_name = "JsonModel"];
     */
    jsonModel: string;
    /**
     * @generated from protobuf field: string languageCode = 4;
     */
    languageCode: string;
    /**
     * @generated from protobuf field: string HtmlBody = 5 [json_name = "HtmlBody"];
     */
    htmlBody: string;
}
/**
 * @generated from protobuf message api.UserMails
 */
export interface UserMails {
    /**
     * @generated from protobuf field: string mail = 1;
     */
    mail: string;
    /**
     * @generated from protobuf field: string languageCode = 2;
     */
    languageCode: string;
}
/**
 * @generated from protobuf message api.ListNotifChanges
 */
export interface ListNotifChanges {
    /**
     * @generated from protobuf field: string ProjectID = 1 [json_name = "ProjectID"];
     */
    projectID: string;
    /**
     * @generated from protobuf field: string VisibilityURI = 2 [json_name = "VisibilityURI"];
     */
    visibilityURI: string;
    /**
     * @generated from protobuf field: string EntityType = 3 [json_name = "EntityType"];
     */
    entityType: string;
    /**
     * @generated from protobuf field: string EntityRefID = 4 [json_name = "EntityRefID"];
     */
    entityRefID: string;
    /**
     * @generated from protobuf field: repeated api.NotifChanges NotifChanges = 5 [json_name = "NotifChanges"];
     */
    notifChanges: NotifChanges[];
    /**
     * @generated from protobuf field: google.protobuf.Struct Tags = 6 [json_name = "Tags"];
     */
    tags?: Struct;
}
/**
 * @generated from protobuf message api.NotifChanges
 */
export interface NotifChanges {
    /**
     * @generated from protobuf field: api.DateTime RefDate = 1 [json_name = "RefDate"];
     */
    refDate?: DateTime;
    /**
     * @generated from protobuf field: string UserName = 2 [json_name = "UserName"];
     */
    userName: string;
    /**
     * @generated from protobuf field: api.NotifTypeEnum NotificationType = 3 [json_name = "NotificationType"];
     */
    notificationType: NotifTypeEnum;
    /**
     * @generated from protobuf field: google.protobuf.Struct Details = 4 [json_name = "Details"];
     */
    details?: Struct;
}
/**
 * @generated from protobuf enum api.NotifTypeEnum
 */
export enum NotifTypeEnum {
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_UNKNOWN = 0;
     */
    NOTIF_TYPE_UNKNOWN = 0,
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_COMMENT = 1;
     */
    NOTIF_TYPE_COMMENT = 1,
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_STATUS = 2;
     */
    NOTIF_TYPE_STATUS = 2,
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_ATTACHMENT_ADDED = 3;
     */
    NOTIF_TYPE_ATTACHMENT_ADDED = 3,
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_ATTACHMENT_DELETED = 4;
     */
    NOTIF_TYPE_ATTACHMENT_DELETED = 4,
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_CREATION = 5;
     */
    NOTIF_TYPE_CREATION = 5,
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_DELETION = 6;
     */
    NOTIF_TYPE_DELETION = 6,
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_CONTACT = 7;
     */
    NOTIF_TYPE_CONTACT = 7,
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_UPDATE = 8;
     */
    NOTIF_TYPE_UPDATE = 8,
    /**
     * @generated from protobuf enum value: NOTIF_TYPE_COMPLETION = 9;
     */
    NOTIF_TYPE_COMPLETION = 9
}
// @generated message type with reflection information, may provide speed optimized methods
class ClaimStatusDef$Type extends MessageType<ClaimStatusDef> {
    constructor() {
        super("api.ClaimStatusDef", [
            { no: 1, name: "StatusCode", kind: "enum", jsonName: "StatusCode", T: () => ["api.ClaimStatus", ClaimStatus, "CLAIM_STATUS_"], options: { "api.indexationType": { Types: [{ Context: "*", Type: "generatedText" }] }, "api.kpiItems": { Items: [{ Context: "Claim", Group: "claim", Queryable: true }] } } },
            { no: 2, name: "Date", kind: "scalar", jsonName: "Date", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true } }, "api.indexationType": { Types: [{ Context: "*", Type: "date" }] }, "api.kpiItems": { Items: [{ Context: "Claim", Group: "claim", Queryable: true }] }, "api.viewType": { Types: [{ Context: "*", Type: "date" }] } } },
            { no: 3, name: "ActualDate", kind: "message", jsonName: "ActualDate", T: () => DateTime, options: { "grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field": { description: "Status effective date. Set by the event's RefDate that triggered the status change." } } }
        ]);
    }
    create(value?: PartialMessage<ClaimStatusDef>): ClaimStatusDef {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.statusCode = 0;
        message.date = "";
        if (value !== undefined)
            reflectionMergePartial<ClaimStatusDef>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ClaimStatusDef): ClaimStatusDef {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.ClaimStatus StatusCode = 1 [json_name = "StatusCode"];*/ 1:
                    message.statusCode = reader.int32();
                    break;
                case /* string Date = 2 [json_name = "Date"];*/ 2:
                    message.date = reader.string();
                    break;
                case /* api.DateTime ActualDate = 3 [json_name = "ActualDate"];*/ 3:
                    message.actualDate = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.actualDate);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ClaimStatusDef, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.ClaimStatus StatusCode = 1 [json_name = "StatusCode"]; */
        if (message.statusCode !== 0)
            writer.tag(1, WireType.Varint).int32(message.statusCode);
        /* string Date = 2 [json_name = "Date"]; */
        if (message.date !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.date);
        /* api.DateTime ActualDate = 3 [json_name = "ActualDate"]; */
        if (message.actualDate)
            DateTime.internalBinaryWrite(message.actualDate, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ClaimStatusDef
 */
export const ClaimStatusDef = new ClaimStatusDef$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ClaimStatusStruct$Type extends MessageType<ClaimStatusStruct> {
    constructor() {
        super("api.ClaimStatusStruct", [
            { no: 1, name: "Current", kind: "message", jsonName: "Current", T: () => ClaimStatusDef },
            { no: 2, name: "History", kind: "message", jsonName: "History", repeat: 1 /*RepeatType.PACKED*/, T: () => ClaimStatusDef, options: { "api.aggKey": "Date" } },
            { no: 3, name: "CreationDate", kind: "scalar", jsonName: "CreationDate", T: 9 /*ScalarType.STRING*/, options: { "validate.rules": { string: { dateIso8601: true } } } },
            { no: 4, name: "Version", kind: "scalar", jsonName: "Version", T: 13 /*ScalarType.UINT32*/ }
        ]);
    }
    create(value?: PartialMessage<ClaimStatusStruct>): ClaimStatusStruct {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.history = [];
        message.creationDate = "";
        message.version = 0;
        if (value !== undefined)
            reflectionMergePartial<ClaimStatusStruct>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ClaimStatusStruct): ClaimStatusStruct {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.ClaimStatusDef Current = 1 [json_name = "Current"];*/ 1:
                    message.current = ClaimStatusDef.internalBinaryRead(reader, reader.uint32(), options, message.current);
                    break;
                case /* repeated api.ClaimStatusDef History = 2 [json_name = "History"];*/ 2:
                    message.history.push(ClaimStatusDef.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* string CreationDate = 3 [json_name = "CreationDate"];*/ 3:
                    message.creationDate = reader.string();
                    break;
                case /* uint32 Version = 4 [json_name = "Version"];*/ 4:
                    message.version = reader.uint32();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ClaimStatusStruct, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.ClaimStatusDef Current = 1 [json_name = "Current"]; */
        if (message.current)
            ClaimStatusDef.internalBinaryWrite(message.current, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.ClaimStatusDef History = 2 [json_name = "History"]; */
        for (let i = 0; i < message.history.length; i++)
            ClaimStatusDef.internalBinaryWrite(message.history[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* string CreationDate = 3 [json_name = "CreationDate"]; */
        if (message.creationDate !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.creationDate);
        /* uint32 Version = 4 [json_name = "Version"]; */
        if (message.version !== 0)
            writer.tag(4, WireType.Varint).uint32(message.version);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ClaimStatusStruct
 */
export const ClaimStatusStruct = new ClaimStatusStruct$Type();
// @generated message type with reflection information, may provide speed optimized methods
class WindowedNotif$Type extends MessageType<WindowedNotif> {
    constructor() {
        super("api.WindowedNotif", [
            { no: 1, name: "ListNotifChanges", kind: "message", jsonName: "ListNotifChanges", T: () => ListNotifChanges },
            { no: 2, name: "UserMails", kind: "message", jsonName: "UserMails", repeat: 1 /*RepeatType.PACKED*/, T: () => UserMails },
            { no: 3, name: "JsonModel", kind: "scalar", jsonName: "JsonModel", T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "languageCode", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 5, name: "HtmlBody", kind: "scalar", jsonName: "HtmlBody", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<WindowedNotif>): WindowedNotif {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.userMails = [];
        message.jsonModel = "";
        message.languageCode = "";
        message.htmlBody = "";
        if (value !== undefined)
            reflectionMergePartial<WindowedNotif>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: WindowedNotif): WindowedNotif {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.ListNotifChanges ListNotifChanges = 1 [json_name = "ListNotifChanges"];*/ 1:
                    message.listNotifChanges = ListNotifChanges.internalBinaryRead(reader, reader.uint32(), options, message.listNotifChanges);
                    break;
                case /* repeated api.UserMails UserMails = 2 [json_name = "UserMails"];*/ 2:
                    message.userMails.push(UserMails.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* string JsonModel = 3 [json_name = "JsonModel"];*/ 3:
                    message.jsonModel = reader.string();
                    break;
                case /* string languageCode */ 4:
                    message.languageCode = reader.string();
                    break;
                case /* string HtmlBody = 5 [json_name = "HtmlBody"];*/ 5:
                    message.htmlBody = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: WindowedNotif, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.ListNotifChanges ListNotifChanges = 1 [json_name = "ListNotifChanges"]; */
        if (message.listNotifChanges)
            ListNotifChanges.internalBinaryWrite(message.listNotifChanges, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* repeated api.UserMails UserMails = 2 [json_name = "UserMails"]; */
        for (let i = 0; i < message.userMails.length; i++)
            UserMails.internalBinaryWrite(message.userMails[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
        /* string JsonModel = 3 [json_name = "JsonModel"]; */
        if (message.jsonModel !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.jsonModel);
        /* string languageCode = 4; */
        if (message.languageCode !== "")
            writer.tag(4, WireType.LengthDelimited).string(message.languageCode);
        /* string HtmlBody = 5 [json_name = "HtmlBody"]; */
        if (message.htmlBody !== "")
            writer.tag(5, WireType.LengthDelimited).string(message.htmlBody);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.WindowedNotif
 */
export const WindowedNotif = new WindowedNotif$Type();
// @generated message type with reflection information, may provide speed optimized methods
class UserMails$Type extends MessageType<UserMails> {
    constructor() {
        super("api.UserMails", [
            { no: 1, name: "mail", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "languageCode", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
    create(value?: PartialMessage<UserMails>): UserMails {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.mail = "";
        message.languageCode = "";
        if (value !== undefined)
            reflectionMergePartial<UserMails>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UserMails): UserMails {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string mail */ 1:
                    message.mail = reader.string();
                    break;
                case /* string languageCode */ 2:
                    message.languageCode = reader.string();
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: UserMails, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string mail = 1; */
        if (message.mail !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.mail);
        /* string languageCode = 2; */
        if (message.languageCode !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.languageCode);
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.UserMails
 */
export const UserMails = new UserMails$Type();
// @generated message type with reflection information, may provide speed optimized methods
class ListNotifChanges$Type extends MessageType<ListNotifChanges> {
    constructor() {
        super("api.ListNotifChanges", [
            { no: 1, name: "ProjectID", kind: "scalar", jsonName: "ProjectID", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "VisibilityURI", kind: "scalar", jsonName: "VisibilityURI", T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "EntityType", kind: "scalar", jsonName: "EntityType", T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "EntityRefID", kind: "scalar", jsonName: "EntityRefID", T: 9 /*ScalarType.STRING*/ },
            { no: 5, name: "NotifChanges", kind: "message", jsonName: "NotifChanges", repeat: 1 /*RepeatType.PACKED*/, T: () => NotifChanges },
            { no: 6, name: "Tags", kind: "message", jsonName: "Tags", T: () => Struct }
        ]);
    }
    create(value?: PartialMessage<ListNotifChanges>): ListNotifChanges {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.projectID = "";
        message.visibilityURI = "";
        message.entityType = "";
        message.entityRefID = "";
        message.notifChanges = [];
        if (value !== undefined)
            reflectionMergePartial<ListNotifChanges>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListNotifChanges): ListNotifChanges {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* string ProjectID = 1 [json_name = "ProjectID"];*/ 1:
                    message.projectID = reader.string();
                    break;
                case /* string VisibilityURI = 2 [json_name = "VisibilityURI"];*/ 2:
                    message.visibilityURI = reader.string();
                    break;
                case /* string EntityType = 3 [json_name = "EntityType"];*/ 3:
                    message.entityType = reader.string();
                    break;
                case /* string EntityRefID = 4 [json_name = "EntityRefID"];*/ 4:
                    message.entityRefID = reader.string();
                    break;
                case /* repeated api.NotifChanges NotifChanges = 5 [json_name = "NotifChanges"];*/ 5:
                    message.notifChanges.push(NotifChanges.internalBinaryRead(reader, reader.uint32(), options));
                    break;
                case /* google.protobuf.Struct Tags = 6 [json_name = "Tags"];*/ 6:
                    message.tags = Struct.internalBinaryRead(reader, reader.uint32(), options, message.tags);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: ListNotifChanges, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* string ProjectID = 1 [json_name = "ProjectID"]; */
        if (message.projectID !== "")
            writer.tag(1, WireType.LengthDelimited).string(message.projectID);
        /* string VisibilityURI = 2 [json_name = "VisibilityURI"]; */
        if (message.visibilityURI !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.visibilityURI);
        /* string EntityType = 3 [json_name = "EntityType"]; */
        if (message.entityType !== "")
            writer.tag(3, WireType.LengthDelimited).string(message.entityType);
        /* string EntityRefID = 4 [json_name = "EntityRefID"]; */
        if (message.entityRefID !== "")
            writer.tag(4, WireType.LengthDelimited).string(message.entityRefID);
        /* repeated api.NotifChanges NotifChanges = 5 [json_name = "NotifChanges"]; */
        for (let i = 0; i < message.notifChanges.length; i++)
            NotifChanges.internalBinaryWrite(message.notifChanges[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
        /* google.protobuf.Struct Tags = 6 [json_name = "Tags"]; */
        if (message.tags)
            Struct.internalBinaryWrite(message.tags, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.ListNotifChanges
 */
export const ListNotifChanges = new ListNotifChanges$Type();
// @generated message type with reflection information, may provide speed optimized methods
class NotifChanges$Type extends MessageType<NotifChanges> {
    constructor() {
        super("api.NotifChanges", [
            { no: 1, name: "RefDate", kind: "message", jsonName: "RefDate", T: () => DateTime },
            { no: 2, name: "UserName", kind: "scalar", jsonName: "UserName", T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "NotificationType", kind: "enum", jsonName: "NotificationType", T: () => ["api.NotifTypeEnum", NotifTypeEnum] },
            { no: 4, name: "Details", kind: "message", jsonName: "Details", T: () => Struct }
        ]);
    }
    create(value?: PartialMessage<NotifChanges>): NotifChanges {
        const message = globalThis.Object.create((this.messagePrototype!));
        message.userName = "";
        message.notificationType = 0;
        if (value !== undefined)
            reflectionMergePartial<NotifChanges>(this, message, value);
        return message;
    }
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: NotifChanges): NotifChanges {
        let message = target ?? this.create(), end = reader.pos + length;
        while (reader.pos < end) {
            let [fieldNo, wireType] = reader.tag();
            switch (fieldNo) {
                case /* api.DateTime RefDate = 1 [json_name = "RefDate"];*/ 1:
                    message.refDate = DateTime.internalBinaryRead(reader, reader.uint32(), options, message.refDate);
                    break;
                case /* string UserName = 2 [json_name = "UserName"];*/ 2:
                    message.userName = reader.string();
                    break;
                case /* api.NotifTypeEnum NotificationType = 3 [json_name = "NotificationType"];*/ 3:
                    message.notificationType = reader.int32();
                    break;
                case /* google.protobuf.Struct Details = 4 [json_name = "Details"];*/ 4:
                    message.details = Struct.internalBinaryRead(reader, reader.uint32(), options, message.details);
                    break;
                default:
                    let u = options.readUnknownField;
                    if (u === "throw")
                        throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
                    let d = reader.skip(wireType);
                    if (u !== false)
                        (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
            }
        }
        return message;
    }
    internalBinaryWrite(message: NotifChanges, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
        /* api.DateTime RefDate = 1 [json_name = "RefDate"]; */
        if (message.refDate)
            DateTime.internalBinaryWrite(message.refDate, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
        /* string UserName = 2 [json_name = "UserName"]; */
        if (message.userName !== "")
            writer.tag(2, WireType.LengthDelimited).string(message.userName);
        /* api.NotifTypeEnum NotificationType = 3 [json_name = "NotificationType"]; */
        if (message.notificationType !== 0)
            writer.tag(3, WireType.Varint).int32(message.notificationType);
        /* google.protobuf.Struct Details = 4 [json_name = "Details"]; */
        if (message.details)
            Struct.internalBinaryWrite(message.details, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
        let u = options.writeUnknownFields;
        if (u !== false)
            (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
        return writer;
    }
}
/**
 * @generated MessageType for protobuf message api.NotifChanges
 */
export const NotifChanges = new NotifChanges$Type();
