/**
 * 실패 감지 시스템
 * MCP Tool 호출 실패, 사용자 피드백, 성능 지표 미달 등을 감지하여 Reflexion Worker에 전달
 */
import type { IAsyncTaskQueue } from '../../../shared/interfaces/async-task-queue.interface.js';
import type { FailureEvent } from '../../../shared/types/failure-event.js';
/** 실패 이벤트 타입 재export (shared 타입 사용, 하위 호환) */
export type { FailureEvent };
/**
 * 에러 타입 분류
 */
export declare enum ErrorType {
    TOOL_ERROR = "tool_error",
    USER_FEEDBACK = "user_feedback",
    METRIC_FAILURE = "metric_failure"
}
/**
 * 실패 감지 결과
 */
export interface FailureDetectionResult {
    detected: boolean;
    event?: FailureEvent;
    reason?: string;
}
/**
 * 성능 지표 임계값 설정
 */
export interface PerformanceThresholds {
    responseTimeMs: number;
    errorRate: number;
    accuracyThreshold?: number;
}
/**
 * FailureDetector 서비스 클래스
 */
export declare class FailureDetector {
    private eventQueue;
    private performanceThresholds;
    private toolMetrics;
    constructor(eventQueue: IAsyncTaskQueue, performanceThresholds?: PerformanceThresholds);
    /**
     * MCP Tool 호출 실패 감지
     */
    detectToolError(toolName: string, error: Error, params?: any, executionTimeMs?: number): FailureDetectionResult;
    /**
     * 사용자 피드백 기반 실패 감지
     */
    detectUserFeedback(toolName: string, feedback: string, params?: any): FailureDetectionResult;
    /**
     * 성능 지표 미달 감지
     */
    detectPerformanceFailure(toolName: string, executionTimeMs: number, success: boolean, params?: any): FailureDetectionResult;
    /**
     * 실패 이벤트를 큐에 추가
     */
    queueFailureEvent(event: FailureEvent, handler: (event: FailureEvent) => Promise<void>): Promise<boolean>;
    /**
     * 에러 타입 분류
     */
    private classifyError;
    /**
     * 이벤트 ID 생성
     */
    private generateEventId;
    /**
     * 메시지 해시 생성 (SHA256, 첫 16자)
     */
    private hashMessage;
    /**
     * 우선순위 계산
     */
    private calculatePriority;
    /**
     * 작업 목표 추출 (간단한 휴리스틱)
     */
    private extractTaskGoal;
    /**
     * 메트릭 업데이트
     */
    private updateMetrics;
    /**
     * 큐 상태 조회
     */
    getQueueStats(): import("../../../shared/interfaces/async-task-queue.interface.js").IQueueStats;
    /**
     * 큐 시작
     */
    startQueue(): Promise<boolean>;
    /**
     * 큐 중지
     */
    stopQueue(): Promise<boolean>;
    /**
     * 실패 감지 메트릭 수집
     */
    getDetectionMetrics(): {
        totalDetections: number;
        toolErrorCount: number;
        userFeedbackCount: number;
        metricFailureCount: number;
        detectionRate: number;
    };
}
//# sourceMappingURL=failure-detector.d.ts.map