/**
 * create-dashboard tool
 *
 * Registers an agent tool that creates Grafana dashboards from templates.
 * The agent calls this tool when a user asks for a dashboard.
 *
 * This tool wraps POST /api/dashboards/db with built-in templates
 * (llm-command-center, session-explorer, cost-intelligence, tool-performance)
 * or custom dashboard JSON.
 */
import { GrafanaClientRegistry } from "../grafana-client-registry.js";
import type { GrafanaClient } from "../grafana-client.js";
import type { QueryValidationEntry } from "./update-dashboard.js";
type Panel = Record<string, unknown>;
/** Per-panel validation result for custom dashboards. */
export type PanelValidationDetail = {
    panelId: number;
    title: string;
    status: "ok" | "nodata" | "error" | "skipped";
    error?: string;
    queries?: QueryValidationEntry[];
};
/** Aggregate validation result across all panels. */
export type DashboardValidation = {
    panelsTotal: number;
    panelsValid: number;
    panelsNoData: number;
    panelsError: number;
    panelsSkipped: number;
    details: PanelValidationDetail[];
};
/**
 * Validate all panel PromQL queries in a custom dashboard.
 * Dry-runs each panel's expressions and reports per-panel health.
 * Never throws — individual panel failures are captured as error status.
 */
export declare function validateDashboardPanels(client: GrafanaClient, panels: Panel[]): Promise<DashboardValidation>;
export declare function createDashboardToolFactory(registry: GrafanaClientRegistry): (_ctx: unknown) => {
    name: string;
    label: string;
    description: string;
    parameters: {
        type: "object";
        properties: {
            template: {
                type: string;
                enum: string[];
                description: string;
            };
            title: {
                type: string;
                description: string;
            };
            dashboard: {
                type: string;
                description: string;
            };
            folderUid: {
                type: string;
                description: string;
            };
            overwrite: {
                type: string;
                description: string;
                default: boolean;
            };
        };
    };
    execute(_toolCallId: string, params: Record<string, unknown>): Promise<{
        content: Array<{
            type: "text";
            text: string;
        }>;
        details: unknown;
    }>;
};
export {};
