/**
 * LogStreamer — 병렬 에이전트 로그 스트리밍 및 관리
 *
 * 여러 워커의 로그를 실시간으로 스트리밍, 필터링, 포맷팅합니다.
 */
import type { WorkerState, OrchestrationEvent } from "./orchestration-state.js";
export interface LogEntry {
    timestamp: string;
    workerId: string;
    level: "stdout" | "stderr" | "info" | "error" | "warn";
    message: string;
    metadata?: Record<string, unknown>;
}
export interface LogStreamOptions {
    logDir?: string;
    enableConsole?: boolean;
    enableFile?: boolean;
    bufferSize?: number;
    format?: "plain" | "json" | "colored";
    filter?: {
        workers?: string[];
        levels?: LogEntry["level"][];
        patterns?: RegExp[];
    };
}
export interface WorkerLogHandle {
    workerId: string;
    onStdout: (line: string) => void;
    onStderr: (line: string) => void;
    log: (level: LogEntry["level"], message: string, metadata?: Record<string, unknown>) => void;
    close: () => void;
}
export declare class LogStreamer {
    private options;
    private logs;
    private streams;
    private eventHandlers;
    private consoleStream;
    constructor(options?: LogStreamOptions);
    /**
     * 초기화 (로그 디렉토리 생성)
     */
    initialize(runId?: string): Promise<void>;
    /**
     * 워커 로그 핸들 생성
     */
    createWorkerHandle(workerId: string, runId?: string): WorkerLogHandle;
    /**
     * 로그 엔트리 추가
     */
    private addEntry;
    /**
     * 필터 체크
     */
    private shouldLog;
    /**
     * 콘솔에 로그 출력
     */
    private writeToConsole;
    /**
     * 파일에 로그 출력
     */
    private writeToFile;
    /**
     * 로그 엔트리 포맷팅
     */
    private formatEntry;
    /**
     * 이벤트 핸들러 등록
     */
    onLog(handler: (entry: LogEntry) => void): () => void;
    /**
     * 로그 조회
     */
    getLogs(workerId?: string): LogEntry[];
    /**
     * 최근 로그 조회
     */
    getRecentLogs(count?: number, workerId?: string): LogEntry[];
    /**
     * 로그 기록
     */
    log(level: LogEntry["level"], message: string, metadata?: Record<string, unknown>): void;
    /**
     * 워커 시작 로그
     */
    logWorkerStart(worker: WorkerState): void;
    /**
     * 워커 완료 로그
     */
    logWorkerComplete(worker: WorkerState, success: boolean): void;
    /**
     * 이벤트 로그
     */
    logEvent(event: OrchestrationEvent): void;
    /**
     * 모든 스트림 종료
     */
    close(): Promise<void>;
    /**
     * 로그 요약 출력
     */
    formatSummary(): string;
}
