/**
 * Convert a report-object → Slack Block-Kit `blocks` array.
 *
 * Pure function: input → output, no I/O. Throws on invalid input
 * (zod parse error). Callers should validate before calling if they
 * want softer error messages.
 *
 * @param {z.infer<typeof reportObjectSchema>} report
 * @returns {Object[]} Block Kit blocks suitable for chat.postMessage's
 *                    `blocks` field.
 */
export function reportToBlockKit(report: z.infer<typeof reportObjectSchema>): any[];
/**
 * Convert a report-object → Lark interactive-card JSON.
 *
 * @param {z.infer<typeof reportObjectSchema>} report
 * @returns {Object} Lark message card payload — use as `card` field on
 *                   im/v1/messages with msg_type=interactive.
 */
export function reportToLarkCard(report: z.infer<typeof reportObjectSchema>): any;
/**
 * Convert a report-object → Notion blocks payload.
 *
 * Returns three things rather than just `blocks` because Notion's
 * page-create endpoint takes title + icon as page properties (separate
 * from the children blocks). Callers wire them as:
 *   POST /v1/pages
 *     { parent: { database_id }, properties: { Name: { title: [...] } },
 *       icon: { type: 'emoji', emoji }, children: blocks }
 * — or, for append-to-existing-page:
 *   PATCH /v1/blocks/{pageId}/children
 *     { children: blocks }
 * (the title + icon are dropped when appending).
 *
 * Pure function: input → output, no I/O. Throws on invalid input
 * (zod parse error). Notion's block schema documented at:
 *   https://developers.notion.com/reference/block
 *
 * @param {z.infer<typeof reportObjectSchema>} report
 * @returns {{ blocks: Object[], title: string, icon?: string }}
 *   blocks: array of Notion block objects (no `id` / `parent` — those
 *           are server-assigned at create time)
 *   title:  string for the page's Name title property
 *   icon:   optional severity-mapped emoji for the page icon
 */
export function reportToNotionBlocks(report: z.infer<typeof reportObjectSchema>): {
    blocks: any[];
    title: string;
    icon?: string;
};
/**
 * Convert a report-object → a single markdown string.
 *
 * This is the SHARED path for the document channels (Google Docs / Lark
 * Docs / Notion via their create/append tools, which all accept markdown):
 * one renderer, three destinations, each destination's own
 * markdown-to-native converter does the final mapping. Layout mirrors the
 * chat-card renderers 1:1 so a report reads the same everywhere:
 *   - title as `#`, subtitle as a plain line under it
 *   - headline: bold primary + delta arrow + severity emoji + summary
 *   - trend: fenced code block with the same unicodeBar lines
 *   - table: a real markdown pipe table
 *   - callouts: severity-emoji bullets
 *   - breakdown: bold-label bullets
 *   - paragraph: text as-is
 *   - footer: markdown links
 *
 * Pure function: input → output, no I/O. Throws on invalid input
 * (zod parse error) — same contract as the other renderers.
 *
 * @param {z.infer<typeof reportObjectSchema>} report
 * @returns {string} full markdown document
 */
export function reportToMarkdown(report: z.infer<typeof reportObjectSchema>): string;
export const SEVERITIES: readonly ["ok", "info", "warn", "critical"];
export const reportObjectSchema: z.ZodObject<{
    title: z.ZodString;
    subtitle: z.ZodOptional<z.ZodString>;
    headline: z.ZodObject<{
        primary: z.ZodString;
        delta: z.ZodOptional<z.ZodObject<{
            value: z.ZodString;
            direction: z.ZodOptional<z.ZodEnum<["up", "down", "flat"]>>;
            severity: z.ZodOptional<z.ZodEnum<["ok", "info", "warn", "critical"]>>;
        }, "strip", z.ZodTypeAny, {
            value?: string;
            direction?: "flat" | "up" | "down";
            severity?: "ok" | "info" | "warn" | "critical";
        }, {
            value?: string;
            direction?: "flat" | "up" | "down";
            severity?: "ok" | "info" | "warn" | "critical";
        }>>;
        summary: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        summary?: string;
        primary?: string;
        delta?: {
            value?: string;
            direction?: "flat" | "up" | "down";
            severity?: "ok" | "info" | "warn" | "critical";
        };
    }, {
        summary?: string;
        primary?: string;
        delta?: {
            value?: string;
            direction?: "flat" | "up" | "down";
            severity?: "ok" | "info" | "warn" | "critical";
        };
    }>;
    sections: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
        kind: z.ZodLiteral<"trend">;
        title: z.ZodOptional<z.ZodString>;
        labels: z.ZodArray<z.ZodString, "many">;
        values: z.ZodArray<z.ZodNumber, "many">;
        highlight: z.ZodOptional<z.ZodDefault<z.ZodEnum<["last", "max", "min", "none"]>>>;
        severity: z.ZodOptional<z.ZodEnum<["ok", "info", "warn", "critical"]>>;
    }, "strip", z.ZodTypeAny, {
        title?: string;
        values?: number[];
        labels?: string[];
        severity?: "ok" | "info" | "warn" | "critical";
        kind?: "trend";
        highlight?: "none" | "last" | "max" | "min";
    }, {
        title?: string;
        values?: number[];
        labels?: string[];
        severity?: "ok" | "info" | "warn" | "critical";
        kind?: "trend";
        highlight?: "none" | "last" | "max" | "min";
    }>, z.ZodObject<{
        kind: z.ZodLiteral<"table">;
        title: z.ZodOptional<z.ZodString>;
        headers: z.ZodArray<z.ZodString, "many">;
        rows: z.ZodArray<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">, "many">;
    }, "strip", z.ZodTypeAny, {
        title?: string;
        kind?: "table";
        headers?: string[];
        rows?: (string | number)[][];
    }, {
        title?: string;
        kind?: "table";
        headers?: string[];
        rows?: (string | number)[][];
    }>, z.ZodObject<{
        kind: z.ZodLiteral<"callouts">;
        title: z.ZodOptional<z.ZodString>;
        tone: z.ZodOptional<z.ZodDefault<z.ZodEnum<["ok", "info", "warn", "critical"]>>>;
        items: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        title?: string;
        kind?: "callouts";
        tone?: "ok" | "info" | "warn" | "critical";
        items?: string[];
    }, {
        title?: string;
        kind?: "callouts";
        tone?: "ok" | "info" | "warn" | "critical";
        items?: string[];
    }>, z.ZodObject<{
        kind: z.ZodLiteral<"breakdown">;
        title: z.ZodOptional<z.ZodString>;
        rows: z.ZodArray<z.ZodObject<{
            label: z.ZodString;
            value: z.ZodString;
            sub: z.ZodOptional<z.ZodString>;
            severity: z.ZodOptional<z.ZodEnum<["ok", "info", "warn", "critical"]>>;
        }, "strip", z.ZodTypeAny, {
            sub?: string;
            value?: string;
            label?: string;
            severity?: "ok" | "info" | "warn" | "critical";
        }, {
            sub?: string;
            value?: string;
            label?: string;
            severity?: "ok" | "info" | "warn" | "critical";
        }>, "many">;
    }, "strip", z.ZodTypeAny, {
        title?: string;
        kind?: "breakdown";
        rows?: {
            sub?: string;
            value?: string;
            label?: string;
            severity?: "ok" | "info" | "warn" | "critical";
        }[];
    }, {
        title?: string;
        kind?: "breakdown";
        rows?: {
            sub?: string;
            value?: string;
            label?: string;
            severity?: "ok" | "info" | "warn" | "critical";
        }[];
    }>, z.ZodObject<{
        kind: z.ZodLiteral<"paragraph">;
        title: z.ZodOptional<z.ZodString>;
        text: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        title?: string;
        text?: string;
        kind?: "paragraph";
    }, {
        title?: string;
        text?: string;
        kind?: "paragraph";
    }>]>, "many">>, ({
        title?: string;
        values?: number[];
        labels?: string[];
        severity?: "ok" | "info" | "warn" | "critical";
        kind?: "trend";
        highlight?: "none" | "last" | "max" | "min";
    } | {
        title?: string;
        kind?: "table";
        headers?: string[];
        rows?: (string | number)[][];
    } | {
        title?: string;
        kind?: "callouts";
        tone?: "ok" | "info" | "warn" | "critical";
        items?: string[];
    } | {
        title?: string;
        kind?: "breakdown";
        rows?: {
            sub?: string;
            value?: string;
            label?: string;
            severity?: "ok" | "info" | "warn" | "critical";
        }[];
    } | {
        title?: string;
        text?: string;
        kind?: "paragraph";
    })[], ({
        title?: string;
        values?: number[];
        labels?: string[];
        severity?: "ok" | "info" | "warn" | "critical";
        kind?: "trend";
        highlight?: "none" | "last" | "max" | "min";
    } | {
        title?: string;
        kind?: "table";
        headers?: string[];
        rows?: (string | number)[][];
    } | {
        title?: string;
        kind?: "callouts";
        tone?: "ok" | "info" | "warn" | "critical";
        items?: string[];
    } | {
        title?: string;
        kind?: "breakdown";
        rows?: {
            sub?: string;
            value?: string;
            label?: string;
            severity?: "ok" | "info" | "warn" | "critical";
        }[];
    } | {
        title?: string;
        text?: string;
        kind?: "paragraph";
    })[]>;
    footer: z.ZodOptional<z.ZodObject<{
        viewUrl: z.ZodOptional<z.ZodString>;
        rerunUrl: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        viewUrl?: string;
        rerunUrl?: string;
    }, {
        viewUrl?: string;
        rerunUrl?: string;
    }>>;
}, "strip", z.ZodTypeAny, {
    title?: string;
    headline?: {
        summary?: string;
        primary?: string;
        delta?: {
            value?: string;
            direction?: "flat" | "up" | "down";
            severity?: "ok" | "info" | "warn" | "critical";
        };
    };
    subtitle?: string;
    sections?: ({
        title?: string;
        values?: number[];
        labels?: string[];
        severity?: "ok" | "info" | "warn" | "critical";
        kind?: "trend";
        highlight?: "none" | "last" | "max" | "min";
    } | {
        title?: string;
        kind?: "table";
        headers?: string[];
        rows?: (string | number)[][];
    } | {
        title?: string;
        kind?: "callouts";
        tone?: "ok" | "info" | "warn" | "critical";
        items?: string[];
    } | {
        title?: string;
        kind?: "breakdown";
        rows?: {
            sub?: string;
            value?: string;
            label?: string;
            severity?: "ok" | "info" | "warn" | "critical";
        }[];
    } | {
        title?: string;
        text?: string;
        kind?: "paragraph";
    })[];
    footer?: {
        viewUrl?: string;
        rerunUrl?: string;
    };
}, {
    title?: string;
    headline?: {
        summary?: string;
        primary?: string;
        delta?: {
            value?: string;
            direction?: "flat" | "up" | "down";
            severity?: "ok" | "info" | "warn" | "critical";
        };
    };
    subtitle?: string;
    sections?: ({
        title?: string;
        values?: number[];
        labels?: string[];
        severity?: "ok" | "info" | "warn" | "critical";
        kind?: "trend";
        highlight?: "none" | "last" | "max" | "min";
    } | {
        title?: string;
        kind?: "table";
        headers?: string[];
        rows?: (string | number)[][];
    } | {
        title?: string;
        kind?: "callouts";
        tone?: "ok" | "info" | "warn" | "critical";
        items?: string[];
    } | {
        title?: string;
        kind?: "breakdown";
        rows?: {
            sub?: string;
            value?: string;
            label?: string;
            severity?: "ok" | "info" | "warn" | "critical";
        }[];
    } | {
        title?: string;
        text?: string;
        kind?: "paragraph";
    })[];
    footer?: {
        viewUrl?: string;
        rerunUrl?: string;
    };
}>;
import { z } from 'zod';
