/**
 * Generated by the protoc-gen-ts.  DO NOT EDIT!
 * compiler version: 3.19.4
 * source: lsif.proto
 * git: https://github.com/thesayyn/protoc-gen-ts */
import * as pb_1 from "google-protobuf";
export enum MonikerKind {
    import = 0,
    export = 1
}
export class Metadata extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
        version?: string;
        projectRoot?: string;
        positionEncoding?: string;
        toolInfo?: ToolInfo;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
            if ("version" in data && data.version != undefined) {
                this.version = data.version;
            }
            if ("projectRoot" in data && data.projectRoot != undefined) {
                this.projectRoot = data.projectRoot;
            }
            if ("positionEncoding" in data && data.positionEncoding != undefined) {
                this.positionEncoding = data.positionEncoding;
            }
            if ("toolInfo" in data && data.toolInfo != undefined) {
                this.toolInfo = data.toolInfo;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get version() {
        return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
    }
    set version(value: string) {
        pb_1.Message.setField(this, 4, value);
    }
    get projectRoot() {
        return pb_1.Message.getFieldWithDefault(this, 5, "") as string;
    }
    set projectRoot(value: string) {
        pb_1.Message.setField(this, 5, value);
    }
    get positionEncoding() {
        return pb_1.Message.getFieldWithDefault(this, 6, "") as string;
    }
    set positionEncoding(value: string) {
        pb_1.Message.setField(this, 6, value);
    }
    get toolInfo() {
        return pb_1.Message.getWrapperField(this, ToolInfo, 7) as ToolInfo;
    }
    set toolInfo(value: ToolInfo) {
        pb_1.Message.setWrapperField(this, 7, value);
    }
    get has_toolInfo() {
        return pb_1.Message.getField(this, 7) != null;
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
        version?: string;
        projectRoot?: string;
        positionEncoding?: string;
        toolInfo?: ReturnType<typeof ToolInfo.prototype.toObject>;
    }): Metadata {
        const message = new Metadata({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        if (data.version != null) {
            message.version = data.version;
        }
        if (data.projectRoot != null) {
            message.projectRoot = data.projectRoot;
        }
        if (data.positionEncoding != null) {
            message.positionEncoding = data.positionEncoding;
        }
        if (data.toolInfo != null) {
            message.toolInfo = ToolInfo.fromObject(data.toolInfo);
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
            version?: string;
            projectRoot?: string;
            positionEncoding?: string;
            toolInfo?: ReturnType<typeof ToolInfo.prototype.toObject>;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        if (this.version != null) {
            data.version = this.version;
        }
        if (this.projectRoot != null) {
            data.projectRoot = this.projectRoot;
        }
        if (this.positionEncoding != null) {
            data.positionEncoding = this.positionEncoding;
        }
        if (this.toolInfo != null) {
            data.toolInfo = this.toolInfo.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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (this.version.length)
            writer.writeString(4, this.version);
        if (this.projectRoot.length)
            writer.writeString(5, this.projectRoot);
        if (this.positionEncoding.length)
            writer.writeString(6, this.positionEncoding);
        if (this.has_toolInfo)
            writer.writeMessage(7, this.toolInfo, () => this.toolInfo.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Metadata {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Metadata();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                case 4:
                    message.version = reader.readString();
                    break;
                case 5:
                    message.projectRoot = reader.readString();
                    break;
                case 6:
                    message.positionEncoding = reader.readString();
                    break;
                case 7:
                    reader.readMessage(message.toolInfo, () => message.toolInfo = ToolInfo.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Metadata {
        return Metadata.deserialize(bytes);
    }
}
export class ToolInfo extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        name?: string;
        version?: string;
    }) {
        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 ("version" in data && data.version != undefined) {
                this.version = data.version;
            }
        }
    }
    get name() {
        return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
    }
    set name(value: string) {
        pb_1.Message.setField(this, 1, value);
    }
    get version() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set version(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        name?: string;
        version?: string;
    }): ToolInfo {
        const message = new ToolInfo({});
        if (data.name != null) {
            message.name = data.name;
        }
        if (data.version != null) {
            message.version = data.version;
        }
        return message;
    }
    toObject() {
        const data: {
            name?: string;
            version?: string;
        } = {};
        if (this.name != null) {
            data.name = this.name;
        }
        if (this.version != null) {
            data.version = this.version;
        }
        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.version.length)
            writer.writeString(2, this.version);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ToolInfo {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ToolInfo();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.name = reader.readString();
                    break;
                case 2:
                    message.version = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ToolInfo {
        return ToolInfo.deserialize(bytes);
    }
}
export class Project extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
        kind?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
            if ("kind" in data && data.kind != undefined) {
                this.kind = data.kind;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get kind() {
        return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
    }
    set kind(value: string) {
        pb_1.Message.setField(this, 4, value);
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
        kind?: string;
    }): Project {
        const message = new Project({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        if (data.kind != null) {
            message.kind = data.kind;
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
            kind?: string;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        if (this.kind != null) {
            data.kind = this.kind;
        }
        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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (this.kind.length)
            writer.writeString(4, this.kind);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Project {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Project();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                case 4:
                    message.kind = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Project {
        return Project.deserialize(bytes);
    }
}
export class Document extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
        uri?: string;
        languageId?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
            if ("uri" in data && data.uri != undefined) {
                this.uri = data.uri;
            }
            if ("languageId" in data && data.languageId != undefined) {
                this.languageId = data.languageId;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get uri() {
        return pb_1.Message.getFieldWithDefault(this, 4, "") as string;
    }
    set uri(value: string) {
        pb_1.Message.setField(this, 4, value);
    }
    get languageId() {
        return pb_1.Message.getFieldWithDefault(this, 5, "") as string;
    }
    set languageId(value: string) {
        pb_1.Message.setField(this, 5, value);
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
        uri?: string;
        languageId?: string;
    }): Document {
        const message = new Document({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        if (data.uri != null) {
            message.uri = data.uri;
        }
        if (data.languageId != null) {
            message.languageId = data.languageId;
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
            uri?: string;
            languageId?: string;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        if (this.uri != null) {
            data.uri = this.uri;
        }
        if (this.languageId != null) {
            data.languageId = this.languageId;
        }
        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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (this.uri.length)
            writer.writeString(4, this.uri);
        if (this.languageId.length)
            writer.writeString(5, this.languageId);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Document {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Document();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                case 4:
                    message.uri = reader.readString();
                    break;
                case 5:
                    message.languageId = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Document {
        return Document.deserialize(bytes);
    }
}
export class Range extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
        start?: Position;
        end?: Position;
        tag?: Range.Tag;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
            if ("start" in data && data.start != undefined) {
                this.start = data.start;
            }
            if ("end" in data && data.end != undefined) {
                this.end = data.end;
            }
            if ("tag" in data && data.tag != undefined) {
                this.tag = data.tag;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get start() {
        return pb_1.Message.getWrapperField(this, Position, 4) as Position;
    }
    set start(value: Position) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_start() {
        return pb_1.Message.getField(this, 4) != null;
    }
    get end() {
        return pb_1.Message.getWrapperField(this, Position, 5) as Position;
    }
    set end(value: Position) {
        pb_1.Message.setWrapperField(this, 5, value);
    }
    get has_end() {
        return pb_1.Message.getField(this, 5) != null;
    }
    get tag() {
        return pb_1.Message.getWrapperField(this, Range.Tag, 6) as Range.Tag;
    }
    set tag(value: Range.Tag) {
        pb_1.Message.setWrapperField(this, 6, value);
    }
    get has_tag() {
        return pb_1.Message.getField(this, 6) != null;
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
        start?: ReturnType<typeof Position.prototype.toObject>;
        end?: ReturnType<typeof Position.prototype.toObject>;
        tag?: ReturnType<typeof Range.Tag.prototype.toObject>;
    }): Range {
        const message = new Range({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        if (data.start != null) {
            message.start = Position.fromObject(data.start);
        }
        if (data.end != null) {
            message.end = Position.fromObject(data.end);
        }
        if (data.tag != null) {
            message.tag = Range.Tag.fromObject(data.tag);
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
            start?: ReturnType<typeof Position.prototype.toObject>;
            end?: ReturnType<typeof Position.prototype.toObject>;
            tag?: ReturnType<typeof Range.Tag.prototype.toObject>;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        if (this.start != null) {
            data.start = this.start.toObject();
        }
        if (this.end != null) {
            data.end = this.end.toObject();
        }
        if (this.tag != null) {
            data.tag = this.tag.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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (this.has_start)
            writer.writeMessage(4, this.start, () => this.start.serialize(writer));
        if (this.has_end)
            writer.writeMessage(5, this.end, () => this.end.serialize(writer));
        if (this.has_tag)
            writer.writeMessage(6, this.tag, () => this.tag.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Range {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Range();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                case 4:
                    reader.readMessage(message.start, () => message.start = Position.deserialize(reader));
                    break;
                case 5:
                    reader.readMessage(message.end, () => message.end = Position.deserialize(reader));
                    break;
                case 6:
                    reader.readMessage(message.tag, () => message.tag = Range.Tag.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Range {
        return Range.deserialize(bytes);
    }
}
export namespace Range {
    export class Tag extends pb_1.Message {
        #one_of_decls: number[][] = [];
        constructor(data?: any[] | {
            type?: string;
            text?: string;
            kind?: number;
            fullRange?: FullRange;
        }) {
            super();
            pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
            if (!Array.isArray(data) && typeof data == "object") {
                if ("type" in data && data.type != undefined) {
                    this.type = data.type;
                }
                if ("text" in data && data.text != undefined) {
                    this.text = data.text;
                }
                if ("kind" in data && data.kind != undefined) {
                    this.kind = data.kind;
                }
                if ("fullRange" in data && data.fullRange != undefined) {
                    this.fullRange = data.fullRange;
                }
            }
        }
        get type() {
            return pb_1.Message.getFieldWithDefault(this, 1, "") as string;
        }
        set type(value: string) {
            pb_1.Message.setField(this, 1, value);
        }
        get text() {
            return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
        }
        set text(value: string) {
            pb_1.Message.setField(this, 2, value);
        }
        get kind() {
            return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
        }
        set kind(value: number) {
            pb_1.Message.setField(this, 3, value);
        }
        get fullRange() {
            return pb_1.Message.getWrapperField(this, FullRange, 4) as FullRange;
        }
        set fullRange(value: FullRange) {
            pb_1.Message.setWrapperField(this, 4, value);
        }
        get has_fullRange() {
            return pb_1.Message.getField(this, 4) != null;
        }
        static fromObject(data: {
            type?: string;
            text?: string;
            kind?: number;
            fullRange?: ReturnType<typeof FullRange.prototype.toObject>;
        }): Tag {
            const message = new Tag({});
            if (data.type != null) {
                message.type = data.type;
            }
            if (data.text != null) {
                message.text = data.text;
            }
            if (data.kind != null) {
                message.kind = data.kind;
            }
            if (data.fullRange != null) {
                message.fullRange = FullRange.fromObject(data.fullRange);
            }
            return message;
        }
        toObject() {
            const data: {
                type?: string;
                text?: string;
                kind?: number;
                fullRange?: ReturnType<typeof FullRange.prototype.toObject>;
            } = {};
            if (this.type != null) {
                data.type = this.type;
            }
            if (this.text != null) {
                data.text = this.text;
            }
            if (this.kind != null) {
                data.kind = this.kind;
            }
            if (this.fullRange != null) {
                data.fullRange = this.fullRange.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.type.length)
                writer.writeString(1, this.type);
            if (this.text.length)
                writer.writeString(2, this.text);
            if (this.kind != 0)
                writer.writeInt32(3, this.kind);
            if (this.has_fullRange)
                writer.writeMessage(4, this.fullRange, () => this.fullRange.serialize(writer));
            if (!w)
                return writer.getResultBuffer();
        }
        static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Tag {
            const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Tag();
            while (reader.nextField()) {
                if (reader.isEndGroup())
                    break;
                switch (reader.getFieldNumber()) {
                    case 1:
                        message.type = reader.readString();
                        break;
                    case 2:
                        message.text = reader.readString();
                        break;
                    case 3:
                        message.kind = reader.readInt32();
                        break;
                    case 4:
                        reader.readMessage(message.fullRange, () => message.fullRange = FullRange.deserialize(reader));
                        break;
                    default: reader.skipField();
                }
            }
            return message;
        }
        serializeBinary(): Uint8Array {
            return this.serialize();
        }
        static override deserializeBinary(bytes: Uint8Array): Tag {
            return Tag.deserialize(bytes);
        }
    }
}
export class Position extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        line?: number;
        character?: 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 ("line" in data && data.line != undefined) {
                this.line = data.line;
            }
            if ("character" in data && data.character != undefined) {
                this.character = data.character;
            }
        }
    }
    get line() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set line(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get character() {
        return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
    }
    set character(value: number) {
        pb_1.Message.setField(this, 2, value);
    }
    static fromObject(data: {
        line?: number;
        character?: number;
    }): Position {
        const message = new Position({});
        if (data.line != null) {
            message.line = data.line;
        }
        if (data.character != null) {
            message.character = data.character;
        }
        return message;
    }
    toObject() {
        const data: {
            line?: number;
            character?: number;
        } = {};
        if (this.line != null) {
            data.line = this.line;
        }
        if (this.character != null) {
            data.character = this.character;
        }
        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.line != 0)
            writer.writeInt32(1, this.line);
        if (this.character != 0)
            writer.writeInt32(2, this.character);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Position {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Position();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.line = reader.readInt32();
                    break;
                case 2:
                    message.character = reader.readInt32();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Position {
        return Position.deserialize(bytes);
    }
}
export class FullRange extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        start?: Position;
        end?: Position;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("start" in data && data.start != undefined) {
                this.start = data.start;
            }
            if ("end" in data && data.end != undefined) {
                this.end = data.end;
            }
        }
    }
    get start() {
        return pb_1.Message.getWrapperField(this, Position, 1) as Position;
    }
    set start(value: Position) {
        pb_1.Message.setWrapperField(this, 1, value);
    }
    get has_start() {
        return pb_1.Message.getField(this, 1) != null;
    }
    get end() {
        return pb_1.Message.getWrapperField(this, Position, 2) as Position;
    }
    set end(value: Position) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_end() {
        return pb_1.Message.getField(this, 2) != null;
    }
    static fromObject(data: {
        start?: ReturnType<typeof Position.prototype.toObject>;
        end?: ReturnType<typeof Position.prototype.toObject>;
    }): FullRange {
        const message = new FullRange({});
        if (data.start != null) {
            message.start = Position.fromObject(data.start);
        }
        if (data.end != null) {
            message.end = Position.fromObject(data.end);
        }
        return message;
    }
    toObject() {
        const data: {
            start?: ReturnType<typeof Position.prototype.toObject>;
            end?: ReturnType<typeof Position.prototype.toObject>;
        } = {};
        if (this.start != null) {
            data.start = this.start.toObject();
        }
        if (this.end != null) {
            data.end = this.end.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.has_start)
            writer.writeMessage(1, this.start, () => this.start.serialize(writer));
        if (this.has_end)
            writer.writeMessage(2, this.end, () => this.end.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): FullRange {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new FullRange();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    reader.readMessage(message.start, () => message.start = Position.deserialize(reader));
                    break;
                case 2:
                    reader.readMessage(message.end, () => message.end = Position.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): FullRange {
        return FullRange.deserialize(bytes);
    }
}
export class Declaration extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        fullRange?: FullRange;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("fullRange" in data && data.fullRange != undefined) {
                this.fullRange = data.fullRange;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get fullRange() {
        return pb_1.Message.getWrapperField(this, FullRange, 2) as FullRange;
    }
    set fullRange(value: FullRange) {
        pb_1.Message.setWrapperField(this, 2, value);
    }
    get has_fullRange() {
        return pb_1.Message.getField(this, 2) != null;
    }
    static fromObject(data: {
        id?: number;
        fullRange?: ReturnType<typeof FullRange.prototype.toObject>;
    }): Declaration {
        const message = new Declaration({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.fullRange != null) {
            message.fullRange = FullRange.fromObject(data.fullRange);
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            fullRange?: ReturnType<typeof FullRange.prototype.toObject>;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.fullRange != null) {
            data.fullRange = this.fullRange.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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.has_fullRange)
            writer.writeMessage(2, this.fullRange, () => this.fullRange.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Declaration {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Declaration();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    reader.readMessage(message.fullRange, () => message.fullRange = FullRange.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Declaration {
        return Declaration.deserialize(bytes);
    }
}
export class Moniker extends pb_1.Message {
    #one_of_decls: number[][] = [[7]];
    constructor(data?: any[] | ({
        id?: number;
        type?: string;
        label?: string;
        kind?: MonikerKind;
        scheme?: string;
        identifier?: string;
    } & (({
        unique?: string;
    })))) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
            if ("kind" in data && data.kind != undefined) {
                this.kind = data.kind;
            }
            if ("scheme" in data && data.scheme != undefined) {
                this.scheme = data.scheme;
            }
            if ("identifier" in data && data.identifier != undefined) {
                this.identifier = data.identifier;
            }
            if ("unique" in data && data.unique != undefined) {
                this.unique = data.unique;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get kind() {
        return pb_1.Message.getFieldWithDefault(this, 4, MonikerKind.import) as MonikerKind;
    }
    set kind(value: MonikerKind) {
        pb_1.Message.setField(this, 4, value);
    }
    get scheme() {
        return pb_1.Message.getFieldWithDefault(this, 5, "") as string;
    }
    set scheme(value: string) {
        pb_1.Message.setField(this, 5, value);
    }
    get identifier() {
        return pb_1.Message.getFieldWithDefault(this, 6, "") as string;
    }
    set identifier(value: string) {
        pb_1.Message.setField(this, 6, value);
    }
    get unique() {
        return pb_1.Message.getFieldWithDefault(this, 7, "") as string;
    }
    set unique(value: string) {
        pb_1.Message.setOneofField(this, 7, this.#one_of_decls[0], value);
    }
    get has_unique() {
        return pb_1.Message.getField(this, 7) != null;
    }
    get _unique() {
        const cases: {
            [index: number]: "none" | "unique";
        } = {
            0: "none",
            7: "unique"
        };
        return cases[pb_1.Message.computeOneofCase(this, [7])];
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
        kind?: MonikerKind;
        scheme?: string;
        identifier?: string;
        unique?: string;
    }): Moniker {
        const message = new Moniker({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        if (data.kind != null) {
            message.kind = data.kind;
        }
        if (data.scheme != null) {
            message.scheme = data.scheme;
        }
        if (data.identifier != null) {
            message.identifier = data.identifier;
        }
        if (data.unique != null) {
            message.unique = data.unique;
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
            kind?: MonikerKind;
            scheme?: string;
            identifier?: string;
            unique?: string;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        if (this.kind != null) {
            data.kind = this.kind;
        }
        if (this.scheme != null) {
            data.scheme = this.scheme;
        }
        if (this.identifier != null) {
            data.identifier = this.identifier;
        }
        if (this.unique != null) {
            data.unique = this.unique;
        }
        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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (this.kind != MonikerKind.import)
            writer.writeEnum(4, this.kind);
        if (this.scheme.length)
            writer.writeString(5, this.scheme);
        if (this.identifier.length)
            writer.writeString(6, this.identifier);
        if (this.has_unique)
            writer.writeString(7, this.unique);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Moniker {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Moniker();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                case 4:
                    message.kind = reader.readEnum();
                    break;
                case 5:
                    message.scheme = reader.readString();
                    break;
                case 6:
                    message.identifier = reader.readString();
                    break;
                case 7:
                    message.unique = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Moniker {
        return Moniker.deserialize(bytes);
    }
}
export class ResultSet extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
    }): ResultSet {
        const message = new ResultSet({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ResultSet {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ResultSet();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ResultSet {
        return ResultSet.deserialize(bytes);
    }
}
export class DefinitionResult extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
    }): DefinitionResult {
        const message = new DefinitionResult({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DefinitionResult {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DefinitionResult();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DefinitionResult {
        return DefinitionResult.deserialize(bytes);
    }
}
export class ReferenceResult extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
    }): ReferenceResult {
        const message = new ReferenceResult({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ReferenceResult {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ReferenceResult();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ReferenceResult {
        return ReferenceResult.deserialize(bytes);
    }
}
export class DocumentSymbolResult extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
        result?: ParentChildRelationships;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
            if ("result" in data && data.result != undefined) {
                this.result = data.result;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get result() {
        return pb_1.Message.getWrapperField(this, ParentChildRelationships, 4) as ParentChildRelationships;
    }
    set result(value: ParentChildRelationships) {
        pb_1.Message.setWrapperField(this, 4, value);
    }
    get has_result() {
        return pb_1.Message.getField(this, 4) != null;
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
        result?: ReturnType<typeof ParentChildRelationships.prototype.toObject>;
    }): DocumentSymbolResult {
        const message = new DocumentSymbolResult({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        if (data.result != null) {
            message.result = ParentChildRelationships.fromObject(data.result);
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
            result?: ReturnType<typeof ParentChildRelationships.prototype.toObject>;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        if (this.result != null) {
            data.result = this.result.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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (this.has_result)
            writer.writeMessage(4, this.result, () => this.result.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DocumentSymbolResult {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DocumentSymbolResult();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                case 4:
                    reader.readMessage(message.result, () => message.result = ParentChildRelationships.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DocumentSymbolResult {
        return DocumentSymbolResult.deserialize(bytes);
    }
}
export class ParentChildRelationships extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        children?: ParentChildRelationships[];
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("children" in data && data.children != undefined) {
                this.children = data.children;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get children() {
        return pb_1.Message.getRepeatedWrapperField(this, ParentChildRelationships, 2) as ParentChildRelationships[];
    }
    set children(value: ParentChildRelationships[]) {
        pb_1.Message.setRepeatedWrapperField(this, 2, value);
    }
    static fromObject(data: {
        id?: number;
        children?: ReturnType<typeof ParentChildRelationships.prototype.toObject>[];
    }): ParentChildRelationships {
        const message = new ParentChildRelationships({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.children != null) {
            message.children = data.children.map(item => ParentChildRelationships.fromObject(item));
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            children?: ReturnType<typeof ParentChildRelationships.prototype.toObject>[];
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.children != null) {
            data.children = this.children.map((item: ParentChildRelationships) => item.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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.children.length)
            writer.writeRepeatedMessage(2, this.children, (item: ParentChildRelationships) => item.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): ParentChildRelationships {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new ParentChildRelationships();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    reader.readMessage(message.children, () => pb_1.Message.addToRepeatedWrapperField(message, 2, ParentChildRelationships.deserialize(reader), ParentChildRelationships));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): ParentChildRelationships {
        return ParentChildRelationships.deserialize(bytes);
    }
}
export class TextDocumentEdge extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
        outV?: number;
        inV?: 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 ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
            if ("outV" in data && data.outV != undefined) {
                this.outV = data.outV;
            }
            if ("inV" in data && data.inV != undefined) {
                this.inV = data.inV;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get outV() {
        return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
    }
    set outV(value: number) {
        pb_1.Message.setField(this, 4, value);
    }
    get inV() {
        return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
    }
    set inV(value: number) {
        pb_1.Message.setField(this, 5, value);
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
        outV?: number;
        inV?: number;
    }): TextDocumentEdge {
        const message = new TextDocumentEdge({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        if (data.outV != null) {
            message.outV = data.outV;
        }
        if (data.inV != null) {
            message.inV = data.inV;
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
            outV?: number;
            inV?: number;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        if (this.outV != null) {
            data.outV = this.outV;
        }
        if (this.inV != null) {
            data.inV = this.inV;
        }
        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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (this.outV != 0)
            writer.writeInt32(4, this.outV);
        if (this.inV != 0)
            writer.writeInt32(5, this.inV);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): TextDocumentEdge {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new TextDocumentEdge();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                case 4:
                    message.outV = reader.readInt32();
                    break;
                case 5:
                    message.inV = reader.readInt32();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): TextDocumentEdge {
        return TextDocumentEdge.deserialize(bytes);
    }
}
export class DefinitionsReferencesItem extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
        outV?: number;
        inVs?: number[];
        property?: string;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [5], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
            if ("outV" in data && data.outV != undefined) {
                this.outV = data.outV;
            }
            if ("inVs" in data && data.inVs != undefined) {
                this.inVs = data.inVs;
            }
            if ("property" in data && data.property != undefined) {
                this.property = data.property;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get outV() {
        return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
    }
    set outV(value: number) {
        pb_1.Message.setField(this, 4, value);
    }
    get inVs() {
        return pb_1.Message.getFieldWithDefault(this, 5, []) as number[];
    }
    set inVs(value: number[]) {
        pb_1.Message.setField(this, 5, value);
    }
    get property() {
        return pb_1.Message.getFieldWithDefault(this, 6, "") as string;
    }
    set property(value: string) {
        pb_1.Message.setField(this, 6, value);
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
        outV?: number;
        inVs?: number[];
        property?: string;
    }): DefinitionsReferencesItem {
        const message = new DefinitionsReferencesItem({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        if (data.outV != null) {
            message.outV = data.outV;
        }
        if (data.inVs != null) {
            message.inVs = data.inVs;
        }
        if (data.property != null) {
            message.property = data.property;
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
            outV?: number;
            inVs?: number[];
            property?: string;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        if (this.outV != null) {
            data.outV = this.outV;
        }
        if (this.inVs != null) {
            data.inVs = this.inVs;
        }
        if (this.property != null) {
            data.property = this.property;
        }
        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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (this.outV != 0)
            writer.writeInt32(4, this.outV);
        if (this.inVs.length)
            writer.writePackedInt32(5, this.inVs);
        if (this.property.length)
            writer.writeString(6, this.property);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): DefinitionsReferencesItem {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new DefinitionsReferencesItem();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                case 4:
                    message.outV = reader.readInt32();
                    break;
                case 5:
                    message.inVs = reader.readPackedInt32();
                    break;
                case 6:
                    message.property = reader.readString();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): DefinitionsReferencesItem {
        return DefinitionsReferencesItem.deserialize(bytes);
    }
}
export class Complexity extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        id?: number;
        type?: string;
        label?: string;
        inV?: number;
        halstead?: Halstead;
    }) {
        super();
        pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls);
        if (!Array.isArray(data) && typeof data == "object") {
            if ("id" in data && data.id != undefined) {
                this.id = data.id;
            }
            if ("type" in data && data.type != undefined) {
                this.type = data.type;
            }
            if ("label" in data && data.label != undefined) {
                this.label = data.label;
            }
            if ("inV" in data && data.inV != undefined) {
                this.inV = data.inV;
            }
            if ("halstead" in data && data.halstead != undefined) {
                this.halstead = data.halstead;
            }
        }
    }
    get id() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set id(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get type() {
        return pb_1.Message.getFieldWithDefault(this, 2, "") as string;
    }
    set type(value: string) {
        pb_1.Message.setField(this, 2, value);
    }
    get label() {
        return pb_1.Message.getFieldWithDefault(this, 3, "") as string;
    }
    set label(value: string) {
        pb_1.Message.setField(this, 3, value);
    }
    get inV() {
        return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
    }
    set inV(value: number) {
        pb_1.Message.setField(this, 4, value);
    }
    get halstead() {
        return pb_1.Message.getWrapperField(this, Halstead, 5) as Halstead;
    }
    set halstead(value: Halstead) {
        pb_1.Message.setWrapperField(this, 5, value);
    }
    get has_halstead() {
        return pb_1.Message.getField(this, 5) != null;
    }
    static fromObject(data: {
        id?: number;
        type?: string;
        label?: string;
        inV?: number;
        halstead?: ReturnType<typeof Halstead.prototype.toObject>;
    }): Complexity {
        const message = new Complexity({});
        if (data.id != null) {
            message.id = data.id;
        }
        if (data.type != null) {
            message.type = data.type;
        }
        if (data.label != null) {
            message.label = data.label;
        }
        if (data.inV != null) {
            message.inV = data.inV;
        }
        if (data.halstead != null) {
            message.halstead = Halstead.fromObject(data.halstead);
        }
        return message;
    }
    toObject() {
        const data: {
            id?: number;
            type?: string;
            label?: string;
            inV?: number;
            halstead?: ReturnType<typeof Halstead.prototype.toObject>;
        } = {};
        if (this.id != null) {
            data.id = this.id;
        }
        if (this.type != null) {
            data.type = this.type;
        }
        if (this.label != null) {
            data.label = this.label;
        }
        if (this.inV != null) {
            data.inV = this.inV;
        }
        if (this.halstead != null) {
            data.halstead = this.halstead.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.id != 0)
            writer.writeInt32(1, this.id);
        if (this.type.length)
            writer.writeString(2, this.type);
        if (this.label.length)
            writer.writeString(3, this.label);
        if (this.inV != 0)
            writer.writeInt32(4, this.inV);
        if (this.has_halstead)
            writer.writeMessage(5, this.halstead, () => this.halstead.serialize(writer));
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Complexity {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Complexity();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.id = reader.readInt32();
                    break;
                case 2:
                    message.type = reader.readString();
                    break;
                case 3:
                    message.label = reader.readString();
                    break;
                case 4:
                    message.inV = reader.readInt32();
                    break;
                case 5:
                    reader.readMessage(message.halstead, () => message.halstead = Halstead.deserialize(reader));
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Complexity {
        return Complexity.deserialize(bytes);
    }
}
export class Halstead extends pb_1.Message {
    #one_of_decls: number[][] = [];
    constructor(data?: any[] | {
        numOperandsTotal?: number;
        numOperatorsTotal?: number;
        numOperandsDistinct?: number;
        numOperatorsDistinct?: number;
        programVocabulary?: number;
        programLength?: number;
        calculatedEstimatedProgramLength?: number;
        volume?: number;
        difficulty?: number;
        effort?: number;
        timeRequiredToProgram?: number;
        numberOfDeliveredBugs?: 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 ("numOperandsTotal" in data && data.numOperandsTotal != undefined) {
                this.numOperandsTotal = data.numOperandsTotal;
            }
            if ("numOperatorsTotal" in data && data.numOperatorsTotal != undefined) {
                this.numOperatorsTotal = data.numOperatorsTotal;
            }
            if ("numOperandsDistinct" in data && data.numOperandsDistinct != undefined) {
                this.numOperandsDistinct = data.numOperandsDistinct;
            }
            if ("numOperatorsDistinct" in data && data.numOperatorsDistinct != undefined) {
                this.numOperatorsDistinct = data.numOperatorsDistinct;
            }
            if ("programVocabulary" in data && data.programVocabulary != undefined) {
                this.programVocabulary = data.programVocabulary;
            }
            if ("programLength" in data && data.programLength != undefined) {
                this.programLength = data.programLength;
            }
            if ("calculatedEstimatedProgramLength" in data && data.calculatedEstimatedProgramLength != undefined) {
                this.calculatedEstimatedProgramLength = data.calculatedEstimatedProgramLength;
            }
            if ("volume" in data && data.volume != undefined) {
                this.volume = data.volume;
            }
            if ("difficulty" in data && data.difficulty != undefined) {
                this.difficulty = data.difficulty;
            }
            if ("effort" in data && data.effort != undefined) {
                this.effort = data.effort;
            }
            if ("timeRequiredToProgram" in data && data.timeRequiredToProgram != undefined) {
                this.timeRequiredToProgram = data.timeRequiredToProgram;
            }
            if ("numberOfDeliveredBugs" in data && data.numberOfDeliveredBugs != undefined) {
                this.numberOfDeliveredBugs = data.numberOfDeliveredBugs;
            }
        }
    }
    get numOperandsTotal() {
        return pb_1.Message.getFieldWithDefault(this, 1, 0) as number;
    }
    set numOperandsTotal(value: number) {
        pb_1.Message.setField(this, 1, value);
    }
    get numOperatorsTotal() {
        return pb_1.Message.getFieldWithDefault(this, 2, 0) as number;
    }
    set numOperatorsTotal(value: number) {
        pb_1.Message.setField(this, 2, value);
    }
    get numOperandsDistinct() {
        return pb_1.Message.getFieldWithDefault(this, 3, 0) as number;
    }
    set numOperandsDistinct(value: number) {
        pb_1.Message.setField(this, 3, value);
    }
    get numOperatorsDistinct() {
        return pb_1.Message.getFieldWithDefault(this, 4, 0) as number;
    }
    set numOperatorsDistinct(value: number) {
        pb_1.Message.setField(this, 4, value);
    }
    get programVocabulary() {
        return pb_1.Message.getFieldWithDefault(this, 5, 0) as number;
    }
    set programVocabulary(value: number) {
        pb_1.Message.setField(this, 5, value);
    }
    get programLength() {
        return pb_1.Message.getFieldWithDefault(this, 6, 0) as number;
    }
    set programLength(value: number) {
        pb_1.Message.setField(this, 6, value);
    }
    get calculatedEstimatedProgramLength() {
        return pb_1.Message.getFieldWithDefault(this, 7, 0) as number;
    }
    set calculatedEstimatedProgramLength(value: number) {
        pb_1.Message.setField(this, 7, value);
    }
    get volume() {
        return pb_1.Message.getFieldWithDefault(this, 8, 0) as number;
    }
    set volume(value: number) {
        pb_1.Message.setField(this, 8, value);
    }
    get difficulty() {
        return pb_1.Message.getFieldWithDefault(this, 9, 0) as number;
    }
    set difficulty(value: number) {
        pb_1.Message.setField(this, 9, value);
    }
    get effort() {
        return pb_1.Message.getFieldWithDefault(this, 10, 0) as number;
    }
    set effort(value: number) {
        pb_1.Message.setField(this, 10, value);
    }
    get timeRequiredToProgram() {
        return pb_1.Message.getFieldWithDefault(this, 11, 0) as number;
    }
    set timeRequiredToProgram(value: number) {
        pb_1.Message.setField(this, 11, value);
    }
    get numberOfDeliveredBugs() {
        return pb_1.Message.getFieldWithDefault(this, 12, 0) as number;
    }
    set numberOfDeliveredBugs(value: number) {
        pb_1.Message.setField(this, 12, value);
    }
    static fromObject(data: {
        numOperandsTotal?: number;
        numOperatorsTotal?: number;
        numOperandsDistinct?: number;
        numOperatorsDistinct?: number;
        programVocabulary?: number;
        programLength?: number;
        calculatedEstimatedProgramLength?: number;
        volume?: number;
        difficulty?: number;
        effort?: number;
        timeRequiredToProgram?: number;
        numberOfDeliveredBugs?: number;
    }): Halstead {
        const message = new Halstead({});
        if (data.numOperandsTotal != null) {
            message.numOperandsTotal = data.numOperandsTotal;
        }
        if (data.numOperatorsTotal != null) {
            message.numOperatorsTotal = data.numOperatorsTotal;
        }
        if (data.numOperandsDistinct != null) {
            message.numOperandsDistinct = data.numOperandsDistinct;
        }
        if (data.numOperatorsDistinct != null) {
            message.numOperatorsDistinct = data.numOperatorsDistinct;
        }
        if (data.programVocabulary != null) {
            message.programVocabulary = data.programVocabulary;
        }
        if (data.programLength != null) {
            message.programLength = data.programLength;
        }
        if (data.calculatedEstimatedProgramLength != null) {
            message.calculatedEstimatedProgramLength = data.calculatedEstimatedProgramLength;
        }
        if (data.volume != null) {
            message.volume = data.volume;
        }
        if (data.difficulty != null) {
            message.difficulty = data.difficulty;
        }
        if (data.effort != null) {
            message.effort = data.effort;
        }
        if (data.timeRequiredToProgram != null) {
            message.timeRequiredToProgram = data.timeRequiredToProgram;
        }
        if (data.numberOfDeliveredBugs != null) {
            message.numberOfDeliveredBugs = data.numberOfDeliveredBugs;
        }
        return message;
    }
    toObject() {
        const data: {
            numOperandsTotal?: number;
            numOperatorsTotal?: number;
            numOperandsDistinct?: number;
            numOperatorsDistinct?: number;
            programVocabulary?: number;
            programLength?: number;
            calculatedEstimatedProgramLength?: number;
            volume?: number;
            difficulty?: number;
            effort?: number;
            timeRequiredToProgram?: number;
            numberOfDeliveredBugs?: number;
        } = {};
        if (this.numOperandsTotal != null) {
            data.numOperandsTotal = this.numOperandsTotal;
        }
        if (this.numOperatorsTotal != null) {
            data.numOperatorsTotal = this.numOperatorsTotal;
        }
        if (this.numOperandsDistinct != null) {
            data.numOperandsDistinct = this.numOperandsDistinct;
        }
        if (this.numOperatorsDistinct != null) {
            data.numOperatorsDistinct = this.numOperatorsDistinct;
        }
        if (this.programVocabulary != null) {
            data.programVocabulary = this.programVocabulary;
        }
        if (this.programLength != null) {
            data.programLength = this.programLength;
        }
        if (this.calculatedEstimatedProgramLength != null) {
            data.calculatedEstimatedProgramLength = this.calculatedEstimatedProgramLength;
        }
        if (this.volume != null) {
            data.volume = this.volume;
        }
        if (this.difficulty != null) {
            data.difficulty = this.difficulty;
        }
        if (this.effort != null) {
            data.effort = this.effort;
        }
        if (this.timeRequiredToProgram != null) {
            data.timeRequiredToProgram = this.timeRequiredToProgram;
        }
        if (this.numberOfDeliveredBugs != null) {
            data.numberOfDeliveredBugs = this.numberOfDeliveredBugs;
        }
        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.numOperandsTotal != 0)
            writer.writeInt32(1, this.numOperandsTotal);
        if (this.numOperatorsTotal != 0)
            writer.writeInt32(2, this.numOperatorsTotal);
        if (this.numOperandsDistinct != 0)
            writer.writeInt32(3, this.numOperandsDistinct);
        if (this.numOperatorsDistinct != 0)
            writer.writeInt32(4, this.numOperatorsDistinct);
        if (this.programVocabulary != 0)
            writer.writeInt32(5, this.programVocabulary);
        if (this.programLength != 0)
            writer.writeInt32(6, this.programLength);
        if (this.calculatedEstimatedProgramLength != 0)
            writer.writeFloat(7, this.calculatedEstimatedProgramLength);
        if (this.volume != 0)
            writer.writeFloat(8, this.volume);
        if (this.difficulty != 0)
            writer.writeFloat(9, this.difficulty);
        if (this.effort != 0)
            writer.writeFloat(10, this.effort);
        if (this.timeRequiredToProgram != 0)
            writer.writeFloat(11, this.timeRequiredToProgram);
        if (this.numberOfDeliveredBugs != 0)
            writer.writeFloat(12, this.numberOfDeliveredBugs);
        if (!w)
            return writer.getResultBuffer();
    }
    static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Halstead {
        const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Halstead();
        while (reader.nextField()) {
            if (reader.isEndGroup())
                break;
            switch (reader.getFieldNumber()) {
                case 1:
                    message.numOperandsTotal = reader.readInt32();
                    break;
                case 2:
                    message.numOperatorsTotal = reader.readInt32();
                    break;
                case 3:
                    message.numOperandsDistinct = reader.readInt32();
                    break;
                case 4:
                    message.numOperatorsDistinct = reader.readInt32();
                    break;
                case 5:
                    message.programVocabulary = reader.readInt32();
                    break;
                case 6:
                    message.programLength = reader.readInt32();
                    break;
                case 7:
                    message.calculatedEstimatedProgramLength = reader.readFloat();
                    break;
                case 8:
                    message.volume = reader.readFloat();
                    break;
                case 9:
                    message.difficulty = reader.readFloat();
                    break;
                case 10:
                    message.effort = reader.readFloat();
                    break;
                case 11:
                    message.timeRequiredToProgram = reader.readFloat();
                    break;
                case 12:
                    message.numberOfDeliveredBugs = reader.readFloat();
                    break;
                default: reader.skipField();
            }
        }
        return message;
    }
    serializeBinary(): Uint8Array {
        return this.serialize();
    }
    static override deserializeBinary(bytes: Uint8Array): Halstead {
        return Halstead.deserialize(bytes);
    }
}
