import { Attributes, AttributeValue } from '../common/Attributes';
import { Context } from '../context/types';
import { BatchObservableResult, ObservableResult } from './ObservableResult';
/**
* Options needed for metric creation
*/
export interface MetricOptions {
/**
* The description of the Metric.
* @default ''
*/
description?: string;
/**
* The unit of the Metric values.
* @default ''
*/
unit?: string;
/**
* Indicates the type of the recorded value.
* @default {@link ValueType.DOUBLE}
*/
valueType?: ValueType;
}
/** The Type of value. It describes how the data is reported. */
export declare enum ValueType {
INT = 0,
DOUBLE = 1
}
/**
* Counter is the most common synchronous instrument. This instrument supports
* an `Add(increment)` function for reporting a sum, and is restricted to
* non-negative increments. The default aggregation is Sum, as for any additive
* instrument.
*
* Example uses for Counter:
*
* - count the number of bytes received.
* - count the number of requests completed.
* - count the number of accounts created.
* - count the number of checkpoints run.
* - count the number of 5xx errors.
*
*/
export interface Counter {
/**
* Increment value of counter by the input. Inputs must not be negative.
*/
add(value: number, attributes?: AttributesTypes, context?: Context): void;
}
export interface UpDownCounter {
/**
* Increment value of counter by the input. Inputs may be negative.
*/
add(value: number, attributes?: AttributesTypes, context?: Context): void;
}
export interface Histogram {
/**
* Records a measurement. Value of the measurement must not be negative.
*/
record(value: number, attributes?: AttributesTypes, context?: Context): void;
}
/**
* @deprecated please use {@link Attributes}
*/
export declare type MetricAttributes = Attributes;
/**
* @deprecated please use {@link AttributeValue}
*/
export declare type MetricAttributeValue = AttributeValue;
/**
* The observable callback for Observable instruments.
*/
export declare type ObservableCallback = (observableResult: ObservableResult) => void | Promise;
/**
* The observable callback for a batch of Observable instruments.
*/
export declare type BatchObservableCallback = (observableResult: BatchObservableResult) => void | Promise;
export interface Observable {
/**
* Sets up a function that will be called whenever a metric collection is initiated.
*
* If the function is already in the list of callbacks for this Observable, the function is not added a second time.
*/
addCallback(callback: ObservableCallback): void;
/**
* Removes a callback previously registered with {@link Observable.addCallback}.
*/
removeCallback(callback: ObservableCallback): void;
}
export declare type ObservableCounter = Observable;
export declare type ObservableUpDownCounter = Observable;
export declare type ObservableGauge = Observable;
//# sourceMappingURL=Metric.d.ts.map