// package: skywalking.v3
// file: language-agent/Meter.proto

/* tslint:disable */
/* eslint-disable */

import * as jspb from "google-protobuf";
import * as common_Common_pb from "../common/Common_pb";

export class Label extends jspb.Message { 
    getName(): string;
    setName(value: string): Label;
    getValue(): string;
    setValue(value: string): Label;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Label.AsObject;
    static toObject(includeInstance: boolean, msg: Label): Label.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: Label, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): Label;
    static deserializeBinaryFromReader(message: Label, reader: jspb.BinaryReader): Label;
}

export namespace Label {
    export type AsObject = {
        name: string,
        value: string,
    }
}

export class MeterBucketValue extends jspb.Message { 
    getBucket(): number;
    setBucket(value: number): MeterBucketValue;
    getCount(): number;
    setCount(value: number): MeterBucketValue;
    getIsnegativeinfinity(): boolean;
    setIsnegativeinfinity(value: boolean): MeterBucketValue;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): MeterBucketValue.AsObject;
    static toObject(includeInstance: boolean, msg: MeterBucketValue): MeterBucketValue.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: MeterBucketValue, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): MeterBucketValue;
    static deserializeBinaryFromReader(message: MeterBucketValue, reader: jspb.BinaryReader): MeterBucketValue;
}

export namespace MeterBucketValue {
    export type AsObject = {
        bucket: number,
        count: number,
        isnegativeinfinity: boolean,
    }
}

export class MeterSingleValue extends jspb.Message { 
    getName(): string;
    setName(value: string): MeterSingleValue;
    clearLabelsList(): void;
    getLabelsList(): Array<Label>;
    setLabelsList(value: Array<Label>): MeterSingleValue;
    addLabels(value?: Label, index?: number): Label;
    getValue(): number;
    setValue(value: number): MeterSingleValue;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): MeterSingleValue.AsObject;
    static toObject(includeInstance: boolean, msg: MeterSingleValue): MeterSingleValue.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: MeterSingleValue, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): MeterSingleValue;
    static deserializeBinaryFromReader(message: MeterSingleValue, reader: jspb.BinaryReader): MeterSingleValue;
}

export namespace MeterSingleValue {
    export type AsObject = {
        name: string,
        labelsList: Array<Label.AsObject>,
        value: number,
    }
}

export class MeterHistogram extends jspb.Message { 
    getName(): string;
    setName(value: string): MeterHistogram;
    clearLabelsList(): void;
    getLabelsList(): Array<Label>;
    setLabelsList(value: Array<Label>): MeterHistogram;
    addLabels(value?: Label, index?: number): Label;
    clearValuesList(): void;
    getValuesList(): Array<MeterBucketValue>;
    setValuesList(value: Array<MeterBucketValue>): MeterHistogram;
    addValues(value?: MeterBucketValue, index?: number): MeterBucketValue;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): MeterHistogram.AsObject;
    static toObject(includeInstance: boolean, msg: MeterHistogram): MeterHistogram.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: MeterHistogram, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): MeterHistogram;
    static deserializeBinaryFromReader(message: MeterHistogram, reader: jspb.BinaryReader): MeterHistogram;
}

export namespace MeterHistogram {
    export type AsObject = {
        name: string,
        labelsList: Array<Label.AsObject>,
        valuesList: Array<MeterBucketValue.AsObject>,
    }
}

export class MeterData extends jspb.Message { 

    hasSinglevalue(): boolean;
    clearSinglevalue(): void;
    getSinglevalue(): MeterSingleValue | undefined;
    setSinglevalue(value?: MeterSingleValue): MeterData;

    hasHistogram(): boolean;
    clearHistogram(): void;
    getHistogram(): MeterHistogram | undefined;
    setHistogram(value?: MeterHistogram): MeterData;
    getService(): string;
    setService(value: string): MeterData;
    getServiceinstance(): string;
    setServiceinstance(value: string): MeterData;
    getTimestamp(): number;
    setTimestamp(value: number): MeterData;

    getMetricCase(): MeterData.MetricCase;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): MeterData.AsObject;
    static toObject(includeInstance: boolean, msg: MeterData): MeterData.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: MeterData, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): MeterData;
    static deserializeBinaryFromReader(message: MeterData, reader: jspb.BinaryReader): MeterData;
}

export namespace MeterData {
    export type AsObject = {
        singlevalue?: MeterSingleValue.AsObject,
        histogram?: MeterHistogram.AsObject,
        service: string,
        serviceinstance: string,
        timestamp: number,
    }

    export enum MetricCase {
        METRIC_NOT_SET = 0,
        SINGLEVALUE = 1,
        HISTOGRAM = 2,
    }

}

export class MeterDataCollection extends jspb.Message { 
    clearMeterdataList(): void;
    getMeterdataList(): Array<MeterData>;
    setMeterdataList(value: Array<MeterData>): MeterDataCollection;
    addMeterdata(value?: MeterData, index?: number): MeterData;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): MeterDataCollection.AsObject;
    static toObject(includeInstance: boolean, msg: MeterDataCollection): MeterDataCollection.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: MeterDataCollection, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): MeterDataCollection;
    static deserializeBinaryFromReader(message: MeterDataCollection, reader: jspb.BinaryReader): MeterDataCollection;
}

export namespace MeterDataCollection {
    export type AsObject = {
        meterdataList: Array<MeterData.AsObject>,
    }
}
