/**
 * Quality Reporter
 *
 * 품질 리포트 생성 서비스
 *
 * 주요 기능:
 * - Markdown, JSON, HTML 형식 리포트 생성
 * - 네임스페이스, 컨텍스트, 시간 범위 필터링
 * - 품질 지표 요약, 경고 정보, 이력 추이 포함
 *
 * PRD FR-1.1: Reporter 역할 - 회상용 리포트 생성
 */
import Database from 'better-sqlite3';
/**
 * 리포트 형식
 */
export type ReportFormat = 'markdown' | 'json' | 'html';
/**
 * 리포트 생성 옵션
 */
export interface ReportOptions {
    /**
     * 리포트 형식 (기본값: 'markdown')
     */
    format?: ReportFormat;
    /**
     * 네임스페이스 필터 (선택적)
     */
    namespace?: string;
    /**
     * 컨텍스트 필터 (기본값: 'default')
     */
    context?: string;
    /**
     * 시작 시간 (ISO 8601 형식, 선택적)
     */
    from?: string;
    /**
     * 종료 시간 (ISO 8601 형식, 선택적)
     */
    to?: string;
    /**
     * 최대 이력 개수 (기본값: 100)
     */
    historyLimit?: number;
}
/**
 * 리포트 데이터 구조
 */
export interface QualityReport {
    /**
     * 리포트 생성 시간
     */
    generated_at: string;
    /**
     * 리포트 옵션
     */
    options: ReportOptions;
    /**
     * 전체 상태 요약
     */
    summary: {
        /**
         * 전체 상태: 'pass', 'warning', 'fail'
         */
        overall_status: 'pass' | 'warning' | 'fail';
        /**
         * 네임스페이스별 상태
         */
        namespace_status: Array<{
            namespace: string;
            status: 'pass' | 'warning' | 'fail';
            metrics_count: number;
            passed_count: number;
            failed_count: number;
        }>;
        /**
         * 총 지표 수
         */
        total_metrics: number;
        /**
         * 통과한 지표 수
         */
        passed_metrics: number;
        /**
         * 실패한 지표 수
         */
        failed_metrics: number;
        /**
         * 경고 지표 수
         */
        warning_metrics: number;
    };
    /**
     * 최신 품질 지표
     */
    latest_metrics: Array<{
        metric_namespace: string;
        metric_key: string;
        context: string;
        metric_value: number;
        measured_at: string;
        status: 'pass' | 'warning' | 'fail';
        threshold_value: number | null;
        threshold_type: 'min' | 'max' | null;
    }>;
    /**
     * 경고 정보
     */
    warnings: Array<{
        metric_namespace: string;
        metric_key: string;
        context: string;
        measured_value: number;
        threshold_value: number;
        threshold_type: 'min' | 'max';
        difference: number;
        message: string;
    }>;
    /**
     * 측정 이력 (최근 N개)
     */
    history: Array<{
        id: string;
        measurement_type: string;
        measured_at: string;
        status: string;
        namespace?: string;
        context?: string;
    }>;
}
/**
 * Quality Reporter
 *
 * PRD FR-1.1: Reporter 역할 - 회상용 리포트 생성
 */
export declare class QualityReporter {
    private db;
    private recorder;
    private thresholdManager;
    constructor(db: Database.Database);
    /**
     * 리포트 데이터 수집
     *
     * @param options - 리포트 옵션
     * @returns 리포트 데이터
     */
    collectReportData(options?: ReportOptions): Promise<QualityReport>;
    /**
     * Markdown 형식 리포트 생성
     *
     * @param reportData - 리포트 데이터
     * @returns Markdown 형식 리포트 문자열
     */
    generateMarkdownReport(reportData: QualityReport): string;
    /**
     * JSON 형식 리포트 생성
     *
     * @param reportData - 리포트 데이터
     * @returns JSON 형식 리포트 문자열
     */
    generateJsonReport(reportData: QualityReport): string;
    /**
     * HTML 형식 리포트 생성
     *
     * @param reportData - 리포트 데이터
     * @returns HTML 형식 리포트 문자열
     */
    generateHtmlReport(reportData: QualityReport): string;
    /**
     * 리포트 생성
     *
     * PRD FR-5.5: 리포트 생성 시 JSON 형식 로그 파일 저장
     * `logs/quality-report-{timestamp}.json` 형식으로 저장
     *
     * @param options - 리포트 옵션
     * @returns 리포트 문자열
     */
    generateReport(options?: ReportOptions): Promise<string>;
    /**
     * 리포트를 JSON 형식으로 파일에 저장
     *
     * PRD FR-5.5: `logs/quality-report-{timestamp}.json` 형식으로 저장
     *
     * @param reportData - 리포트 데이터
     */
    private saveReportToFile;
}
//# sourceMappingURL=quality-reporter.d.ts.map