import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { Distribution } from "./distribution";
import { Timestamp } from "../../../protobuf/timestamp";
/**
 * Represents a single metric value.
 *
 * @generated from protobuf message google.api.servicecontrol.v1.MetricValue
 */
export interface MetricValue {
    /**
     * The labels describing the metric value.
     * See comments on [google.api.servicecontrol.v1.Operation.labels][google.api.servicecontrol.v1.Operation.labels] for
     * the overriding relationship.
     * Note that this map must not contain monitored resource labels.
     *
     * @generated from protobuf field: map<string, string> labels = 1;
     */
    labels: {
        [key: string]: string;
    };
    /**
     * The start of the time period over which this metric value's measurement
     * applies. The time period has different semantics for different metric
     * types (cumulative, delta, and gauge). See the metric definition
     * documentation in the service configuration for details. If not specified,
     * [google.api.servicecontrol.v1.Operation.start_time][google.api.servicecontrol.v1.Operation.start_time] will be used.
     *
     * @generated from protobuf field: google.protobuf.Timestamp start_time = 2;
     */
    startTime?: Timestamp;
    /**
     * The end of the time period over which this metric value's measurement
     * applies.  If not specified,
     * [google.api.servicecontrol.v1.Operation.end_time][google.api.servicecontrol.v1.Operation.end_time] will be used.
     *
     * @generated from protobuf field: google.protobuf.Timestamp end_time = 3;
     */
    endTime?: Timestamp;
    /**
     * @generated from protobuf oneof: value
     */
    value: {
        oneofKind: "boolValue";
        /**
         * A boolean value.
         *
         * @generated from protobuf field: bool bool_value = 4;
         */
        boolValue: boolean;
    } | {
        oneofKind: "int64Value";
        /**
         * A signed 64-bit integer value.
         *
         * @generated from protobuf field: int64 int64_value = 5;
         */
        int64Value: bigint;
    } | {
        oneofKind: "doubleValue";
        /**
         * A double precision floating point value.
         *
         * @generated from protobuf field: double double_value = 6;
         */
        doubleValue: number;
    } | {
        oneofKind: "stringValue";
        /**
         * A text string value.
         *
         * @generated from protobuf field: string string_value = 7;
         */
        stringValue: string;
    } | {
        oneofKind: "distributionValue";
        /**
         * A distribution value.
         *
         * @generated from protobuf field: google.api.servicecontrol.v1.Distribution distribution_value = 8;
         */
        distributionValue: Distribution;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Represents a set of metric values in the same metric.
 * Each metric value in the set should have a unique combination of start time,
 * end time, and label values.
 *
 * @generated from protobuf message google.api.servicecontrol.v1.MetricValueSet
 */
export interface MetricValueSet {
    /**
     * The metric name defined in the service configuration.
     *
     * @generated from protobuf field: string metric_name = 1;
     */
    metricName: string;
    /**
     * The values in this metric.
     *
     * @generated from protobuf field: repeated google.api.servicecontrol.v1.MetricValue metric_values = 2;
     */
    metricValues: MetricValue[];
}
declare class MetricValue$Type extends MessageType<MetricValue> {
    constructor();
    create(value?: PartialMessage<MetricValue>): MetricValue;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MetricValue): MetricValue;
    private binaryReadMap1;
    internalBinaryWrite(message: MetricValue, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v1.MetricValue
 */
export declare const MetricValue: MetricValue$Type;
declare class MetricValueSet$Type extends MessageType<MetricValueSet> {
    constructor();
    create(value?: PartialMessage<MetricValueSet>): MetricValueSet;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MetricValueSet): MetricValueSet;
    internalBinaryWrite(message: MetricValueSet, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.api.servicecontrol.v1.MetricValueSet
 */
export declare const MetricValueSet: MetricValueSet$Type;
export {};
