import { IMetric } from '../metric-types';
/**
* Return the JSON structure which represents these metrics in a graph.
*
* Depending on the metric type (stat or expression), one `Metric` object
* can render to multiple time series.
*
* - Top-level metrics will be rendered visibly, additionally added metrics will
* be rendered invisibly.
* - IDs used in math expressions need to be either globally unique, or refer to the same
* metric object.
*
* This will be called by GraphWidget, no need for clients to call this.
*/
export declare function allMetricsGraphJson(left: IMetric[], right: IMetric[]): any[];
/**
* A single metric in a MetricSet
*/
export interface MetricEntry {
/**
* The metric object
*/
readonly metric: IMetric;
/**
* The tag, added if the object is a primary metric
*/
tag?: A;
/**
* ID for this metric object
*/
id?: string;
}
/**
* Contain a set of metrics, expanding math expressions
*
* "Primary" metrics (added via a top-level call) can be tagged with an additional value.
*/
export declare class MetricSet {
private readonly metrics;
private readonly metricById;
private readonly metricByKey;
/**
* Add the given set of metrics to this set
*/
addTopLevel(tag: A, ...metrics: IMetric[]): void;
/**
* Access all the accumulated timeseries entries
*/
get entries(): ReadonlyArray>;
/**
* Add a metric into the set
*
* The id may not be the same as a previous metric added, unless it's the same metric.
*
* It can be made visible, in which case the new "metric" object replaces the old
* one (and the new ones "renderingPropertieS" will be honored instead of the old
* one's).
*/
private addOne;
}