/**
 * grafana_share_dashboard tool
 *
 * Renders dashboard panels as PNG images and delivers them via the MEDIA:
 * pattern so they appear inline in the user's messaging channel.
 *
 * Three-tier fallback: render PNG → snapshot URL → deep link.
 * This ensures the user always gets *something*, even if the Grafana
 * Image Renderer plugin isn't installed.
 *
 * imageResult() is NOT exported from plugin-sdk — we construct the
 * AgentToolResult manually with both text (MEDIA: prefix) and image content.
 */
import { GrafanaClientRegistry } from "../grafana-client-registry.js";
/**
 * Extract width/height from a PNG IHDR chunk (bytes 16-23, big-endian).
 * Returns null if the buffer is too small or not a valid PNG.
 */
export declare function getPNGDimensions(buffer: ArrayBuffer): {
    width: number;
    height: number;
} | null;
export type RenderFailureInfo = {
    rendererAvailable: boolean;
    renderFailureReason: string;
    remediation?: string;
};
/**
 * Classify a render error into actionable information for the agent.
 * Infers renderer availability from the error type — 502 means the
 * Image Renderer plugin is missing; other errors mean the renderer
 * exists but something else went wrong.
 */
export declare function classifyRenderFailure(err: unknown): RenderFailureInfo;
export declare function createShareDashboardToolFactory(registry: GrafanaClientRegistry): (_ctx: unknown) => {
    name: string;
    label: string;
    description: string;
    parameters: {
        type: "object";
        properties: {
            dashboardUid: {
                type: string;
                description: string;
            };
            panelId: {
                type: string;
                description: string;
            };
            from: {
                type: string;
                description: string;
            };
            to: {
                type: string;
                description: string;
            };
            width: {
                type: string;
                description: string;
            };
            height: {
                type: string;
                description: string;
            };
            theme: {
                type: string;
                enum: string[];
                description: string;
            };
        };
        required: string[];
    };
    execute(_toolCallId: string, params: Record<string, unknown>): Promise<{
        content: Array<{
            type: "text";
            text: string;
        }>;
        details: unknown;
    } | {
        content: ({
            type: "text";
            text: string;
            data?: undefined;
            mimeType?: undefined;
        } | {
            type: "image";
            data: string;
            mimeType: string;
            text?: undefined;
        })[];
        details: {
            dashboardUid: string;
            panelId: number;
            path: string;
            deliveryTier: "image";
            rendererAvailable: boolean;
        };
    }>;
};
