/**
 * grafana_query tool
 *
 * Run PromQL instant or range queries against any Prometheus datasource.
 * The agent uses this to answer data questions directly without creating
 * a dashboard — "what's my cost today?" gets a number, not a URL.
 */
import type { GrafanaClientRegistry } from "../grafana-client-registry.js";
/** Max number of top-level series returned from a range query. */
export declare const MAX_RANGE_SERIES = 50;
/** Max number of top-level results returned from an instant query. */
export declare const MAX_INSTANT_RESULTS = 50;
/**
 * Auto-calculate a step interval from a time range.
 * Targets ~300 datapoints — enough for trend visibility without response bloat.
 * Returns step in seconds as a string (Prometheus-compatible).
 */
export declare function calculateAutoStep(startStr: string, endStr: string): {
    stepSeconds: number;
    stepDisplay: string;
};
export declare function createQueryToolFactory(registry: GrafanaClientRegistry): (_ctx: unknown) => {
    name: string;
    label: string;
    description: string;
    parameters: {
        type: "object";
        properties: {
            datasourceUid: {
                type: string;
                description: string;
            };
            expr: {
                type: string;
                description: string;
            };
            dashboardUid: {
                type: string;
                description: string;
            };
            panelId: {
                type: string;
                description: string;
            };
            queryType: {
                type: string;
                enum: string[];
                description: string;
            };
            time: {
                type: string;
                description: string;
            };
            start: {
                type: string;
                description: string;
            };
            end: {
                type: string;
                description: string;
            };
            step: {
                type: string;
                description: string;
            };
        };
        required: never[];
    };
    execute(_toolCallId: string, params: Record<string, unknown>): Promise<{
        content: Array<{
            type: "text";
            text: string;
        }>;
        details: unknown;
    }>;
};
