/**
 * @fileoverview Donobu HTML report renderer.
 *
 * Pure library that turns a `DonobuReport` (Playwright-JSON superset with
 * optional triage data) into a self-contained HTML document. No filesystem
 * writes, no CLI arg parsing, no environment variable reads — callers (the
 * reporter and the auto-heal orchestrator) own I/O.
 */
import type { DonobuReport } from './model';
interface TreatmentPlanRecord {
    generatedAtIso?: string;
    plan: {
        failureSummary: string;
        failureReason: string;
        confidence: number;
        observedIndicators: string[];
        remediationSteps: Array<{
            category: string;
            summary: string;
            details: string;
        }>;
        additionalDataRequests: Array<{
            description: string;
            suggestedSources: string[];
        }>;
        shouldRetryAutomation: boolean;
        requiresCodeChange: boolean;
        requiresProductFix: boolean;
        notes?: string;
        automationDirectives?: Record<string, any>;
    };
    failure: {
        testCase: {
            title: string;
            file?: string;
            projectName?: string;
        };
        runId?: string | null;
        runDirectory?: string;
        evidencePath?: string;
    };
}
interface HistoricalSignals {
    flakinessScore: number;
    regressionLikelihood: number;
    recentPassRate: number;
    priorSelfHealSuccess: boolean;
    cacheWasRecentlyValid: boolean;
}
interface FlowHistorySummary {
    flowName: string;
    totalRuns: number;
    successCount: number;
    failureCount: number;
    otherCount: number;
    passRate: number;
    recentRuns: Array<{
        id: string;
        state: string;
        runMode: string;
        startedAt: number | null;
        completedAt: number | null;
        durationMs: number | null;
    }>;
    currentStreak: {
        state: 'SUCCESS' | 'FAILED' | 'MIXED';
        length: number;
    };
    lastSuccessfulRunId: string | null;
    queryWindowDays: number;
    queriedAt: string;
}
interface FailureEvidenceRecord {
    schemaVersion: number;
    evidenceId: string;
    runId: string | null;
    runDirectory: string;
    collectedAtIso: string;
    failureScreenshotPath?: string | null;
    baselineScreenshotPath?: string | null;
    failureContext: {
        testCase: {
            title: string;
            file?: string;
            projectName: string;
            status: string;
            retry: number;
            duration: number;
        };
        failure: {
            errors: Array<{
                message?: string;
                stack?: string;
                snippet?: string;
                actual?: string;
                expected?: string;
                location?: string;
            }>;
            attachments: Array<{
                name: string;
                contentType: string;
                path?: string | null;
            }>;
        };
        donobuFlow: {
            metadata: Record<string, any> | null;
            recentToolCalls: Array<{
                toolName?: string;
                name?: string;
                outcome?: Record<string, any>;
                durationMs?: number;
                parameters?: string | null;
                [k: string]: any;
            }>;
        };
        testSnippet: string | null;
        flowHistory?: FlowHistorySummary | null;
        heuristics: {
            failureReason: string;
            evidence: string[];
            confidence: number;
            failureSummary: string;
            shouldRetryAutomation: boolean;
            requiresCodeChange: boolean;
            requiresProductFix: boolean;
            occurredDuringPageAi: boolean;
            staleCacheIndicators: Record<string, boolean>;
            historicalSignals?: HistoricalSignals | null;
            remediationSteps: Array<{
                category: string;
                summary: string;
                details: string;
            }>;
        };
    };
}
export interface TriageData {
    plans: TreatmentPlanRecord[];
    evidence: FailureEvidenceRecord[];
}
export declare function loadTriageData(triageDir: string): TriageData;
export declare function renderHtml(report: DonobuReport, triage: TriageData, outputDir: string | null): string;
/**
 * Render the tiny redirect HTML that Donobu drops into each Playwright-managed
 * per-test directory under `test-results/`. The stub bounces straight to the
 * combined report's `#?testId=<id>` deep link — meta-refresh + JS replace +
 * visible fallback link, so it works with or without JS, online or `file://`.
 *
 * Strictly additive: Donobu does not create or rename Playwright's per-test
 * directories — the caller in `html.ts` only writes this file into directories
 * Playwright already created for the test's attachments.
 */
export declare function renderPerTestStub(params: {
    testId: string;
    title: string;
    relPathToReport: string;
}): string;
export {};
//# sourceMappingURL=render.d.ts.map