/**
 * SmartPerfetto Agent Circuit Breaker
 *
 * 断路器模式实现，负责：
 * 1. 监控 Agent 失败次数
 * 2. 在达到阈值时熔断
 * 3. 实现指数退避重试
 * 4. 触发用户介入机制
 */
import { EventEmitter } from 'events';
import { CircuitState, CircuitBreakerConfig, CircuitDecision, CircuitDiagnostics, CircuitBreakerState } from '../types';
/**
 * 断路器实现
 *
 * 状态转换：
 * - closed: 正常状态，允许请求通过
 * - open: 熔断状态，拒绝请求，等待冷却
 * - half-open: 半开状态，允许有限请求测试恢复
 */
export declare class CircuitBreaker extends EventEmitter {
    private config;
    private state;
    private userResponseTimeout;
    private lastForceCloseTime;
    private forceCloseCount;
    private halfOpenSuccessCount;
    private get USER_RESPONSE_TIMEOUT_MS();
    private get FORCE_CLOSE_COOLDOWN_MS();
    private get MAX_FORCE_CLOSE_COUNT();
    private get HALF_OPEN_SUCCESS_THRESHOLD();
    constructor(config?: Partial<CircuitBreakerConfig>);
    private createInitialState;
    get circuitState(): CircuitState;
    get isTripped(): boolean;
    get isHalfOpen(): boolean;
    get isClosed(): boolean;
    get tripReason(): string | undefined;
    /**
     * 【P2 Fix】获取当前 forceClose 调用次数
     */
    get forceCloseCallCount(): number;
    /**
     * 【P2 Fix】检查是否已达到 forceClose 次数上限
     */
    get isForceCloseLimitReached(): boolean;
    /**
     * 记录 Agent 失败
     */
    recordFailure(agentId: string, error?: string): CircuitDecision;
    /**
     * 记录阶段迭代
     */
    recordIteration(stageId: string): CircuitDecision;
    /**
     * 记录成功
     */
    recordSuccess(agentId: string): void;
    /**
     * 触发熔断
     */
    private trip;
    /**
     * 【P1 Fix】启动用户响应超时计时器
     * 如果用户在超时时间内未响应，自动执行 abort
     */
    private startUserResponseTimeout;
    /**
     * 【P1 Fix】清理用户响应超时计时器
     */
    private clearUserResponseTimeout;
    /**
     * 进入半开状态
     */
    private halfOpen;
    /**
     * 关闭断路器（恢复正常）
     */
    private close;
    /**
     * 检查半开状态是否可以恢复
     * 【P1 Fix】实现渐进式恢复：需要多次成功才完全关闭
     */
    private checkHalfOpenRecovery;
    /**
     * 安排冷却后的状态转换
     */
    private scheduleCooldown;
    /**
     * 计算指数退避延迟
     */
    private calculateBackoff;
    /**
     * 获取单个 Agent 的诊断信息
     */
    getDiagnostics(agentId: string): CircuitDiagnostics;
    /**
     * 获取所有诊断信息
     */
    getAllDiagnostics(): CircuitDiagnostics;
    /**
     * 添加失败历史记录
     */
    private addToFailureHistory;
    /**
     * 检查是否允许执行
     */
    canExecute(): CircuitDecision;
    /**
     * 重置单个 Agent 的计数器
     */
    resetAgent(agentId: string): void;
    /**
     * 重置所有状态
     */
    reset(): void;
    /**
     * 手动关闭断路器（用户干预后）
     * 【P1 Fix】添加冷却期检查，防止用户快速连续选择 'continue'
     * 【P2 Fix】添加次数限制，防止用户无限循环选择 'continue'
     */
    forceClose(): boolean;
    /**
     * 手动触发熔断（用于测试）
     */
    forceTrip(reason: string): CircuitDecision;
    /**
     * 处理用户响应
     * 【P1 Fix】清理超时计时器，处理冷却期
     * 【P2 Fix】处理 forceClose 次数限制
     */
    handleUserResponse(decision: 'continue' | 'abort' | 'skip'): CircuitDecision;
    /**
     * 更新配置
     */
    updateConfig(config: Partial<CircuitBreakerConfig>): void;
    /**
     * 获取当前配置
     */
    getConfig(): CircuitBreakerConfig;
    /**
     * 导出状态（用于持久化）
     */
    exportState(): CircuitBreakerState;
    /**
     * 导入状态（用于恢复）
     */
    importState(state: CircuitBreakerState): void;
}
export default CircuitBreaker;
//# sourceMappingURL=circuitBreaker.d.ts.map