/**
 * @file Report Generator
 * Generate evaluation reports in various formats
 */
import type { JsonObject } from "../../types/common.js";
import type { AggregatedScores, ReportConfig, ReportFormat } from "../../types/scorerTypes.js";
import type { PipelineResult } from "../pipeline/evaluationPipeline.js";
/**
 * Report data structure
 */
export type ReportData = {
    /** Report title */
    title: string;
    /** Timestamp */
    timestamp: number;
    /** Evaluation result */
    result: PipelineResult | AggregatedScores;
    /** Optional custom sections */
    customSections?: Array<{
        title: string;
        content: string | JsonObject;
    }>;
};
/**
 * Generated report
 */
export type GeneratedReport = {
    /** Report format */
    format: ReportFormat;
    /** Report content */
    content: string;
    /** Metadata */
    metadata: {
        generatedAt: number;
        format: ReportFormat;
        config: ReportConfig;
    };
};
/**
 * Report generator class
 */
export declare class ReportGenerator {
    private _config;
    constructor(config?: Partial<ReportConfig>);
    /**
     * Generate a report
     */
    generate(data: ReportData): GeneratedReport;
    /**
     * Generate text report
     */
    private _generateTextReport;
    /**
     * Generate JSON report
     */
    private _generateJsonReport;
    /**
     * Generate Markdown report
     */
    private _generateMarkdownReport;
    /**
     * Generate HTML report
     */
    private _generateHtmlReport;
    /**
     * Escape HTML special characters
     */
    private _escapeHtml;
    /**
     * Update configuration
     */
    configure(config: Partial<ReportConfig>): void;
}
/**
 * Create a report generator
 */
export declare function createReportGenerator(config?: Partial<ReportConfig>): ReportGenerator;
/**
 * Quick report generation functions
 */
export declare const Reports: {
    /** Generate text report */
    text: (data: ReportData) => GeneratedReport;
    /** Generate JSON report */
    json: (data: ReportData) => GeneratedReport;
    /** Generate Markdown report */
    markdown: (data: ReportData) => GeneratedReport;
    /** Generate HTML report */
    html: (data: ReportData) => GeneratedReport;
};
