/**
 * Argus QueryBuilder 客户端
 * POST {url}/api/v5/query_range
 * GET  {url}/api/v5/metrics
 * GET  {url}/api/v5/attribute_keys
 */
import type { ArgusField, ArgusQueryItem } from '../types/dashboard';
export interface ArgusClientConfig {
    url: string;
    token: string;
}
export interface ArgusMetricMeta {
    metricName: string;
    description: string;
    type: string;
    unit: string;
    temporality: string;
    isMonotonic: boolean;
}
export interface ArgusMetricsListResponse {
    status: string;
    data: {
        metrics: ArgusMetricMeta[];
    };
}
export declare function getMetrics(cfg: ArgusClientConfig): Promise<ArgusMetricMeta[]>;
export interface ArgusAttributeKeysResponse {
    data: {
        attributeKeys: ArgusField[];
    };
}
/**
 * Fetch attribute keys for GroupBy autocomplete.
 * GET {url}/api/v5/attribute_keys?signal=&metricName=&search=
 */
export declare function getAttributeKeys(cfg: ArgusClientConfig, params: {
    signal: string;
    metricName?: string;
    search?: string;
}): Promise<ArgusField[]>;
export interface ArgusTimeSeriesValue {
    timestamp: number;
    value: number;
}
export interface ArgusTimeSeries {
    labels?: Array<{
        key: {
            name: string;
        };
        value: unknown;
    }>;
    values: ArgusTimeSeriesValue[];
}
export interface ArgusAggregationBucket {
    index: number;
    alias: string;
    series: ArgusTimeSeries[];
}
export interface ArgusQueryResult {
    queryName: string;
    aggregations: ArgusAggregationBucket[];
}
export interface ArgusQueryRangeResponse {
    data: {
        results: ArgusQueryResult[];
    };
}
export declare function queryRange(queries: ArgusQueryItem[], timeFrom: number, // epoch seconds
timeTill: number, // epoch seconds
cfg: ArgusClientConfig, metricsMap?: Map<string, ArgusMetricMeta>): Promise<ArgusQueryRangeResponse>;
