/**
 * 统一错误处理器
 *
 * 优化：
 * 1. 统一错误处理策略：记录、上报、恢复、降级
 * 2. 错误分类：致命、可恢复、警告
 * 3. 错误恢复机制：自动重试、降级方案
 */
import { ErrorSeverity, ErrorType, FrameworkError } from '../../utils/errors';
import type { MonitoringService } from '../../utils/monitoring';
/**
 * 错误处理策略
 */
export declare enum ErrorHandlingStrategy {
    /**
     * 记录错误（日志）
     */
    LOG = "LOG",
    /**
     * 上报错误（监控服务）
     */
    REPORT = "REPORT",
    /**
     * 尝试恢复错误
     */
    RECOVER = "RECOVER",
    /**
     * 降级处理
     */
    FALLBACK = "FALLBACK",
    /**
     * 忽略错误
     */
    IGNORE = "IGNORE"
}
/**
 * 错误恢复选项
 */
export interface ErrorRecoveryOptions {
    /**
     * 最大重试次数
     * @default 3
     */
    maxRetries?: number;
    /**
     * 重试延迟（毫秒）
     * @default 1000
     */
    retryDelay?: number;
    /**
     * 是否启用指数退避
     * @default true
     */
    exponentialBackoff?: boolean;
    /**
     * 重试条件函数
     */
    shouldRetry?: (error: unknown, attempt: number) => boolean;
    /**
     * 降级方案函数
     */
    fallback?: () => Promise<unknown> | unknown;
}
/**
 * 错误处理配置
 */
export interface ErrorHandlerConfig {
    /**
     * 监控服务实例（可选）
     */
    monitoring?: MonitoringService;
    /**
     * 默认错误处理策略
     * @default [ErrorHandlingStrategy.LOG, ErrorHandlingStrategy.REPORT]
     */
    defaultStrategies?: ErrorHandlingStrategy[];
    /**
     * 错误严重程度对应的处理策略
     */
    severityStrategies?: Partial<Record<ErrorSeverity, ErrorHandlingStrategy[]>>;
    /**
     * 错误类型对应的处理策略
     */
    typeStrategies?: Partial<Record<ErrorType, ErrorHandlingStrategy[]>>;
    /**
     * 错误恢复选项
     */
    recoveryOptions?: ErrorRecoveryOptions;
    /**
     * 是否在开发环境显示详细错误信息
     * @default true
     */
    showDetailedErrorsInDev?: boolean;
}
/**
 * 错误处理结果
 */
export interface ErrorHandleResult {
    /**
     * 是否已处理
     */
    handled: boolean;
    /**
     * 是否可恢复
     */
    recoverable: boolean;
    /**
     * 恢复后的结果（如果已恢复）
     */
    recoveredValue?: unknown;
    /**
     * 使用的处理策略
     */
    strategies: ErrorHandlingStrategy[];
    /**
     * 错误信息
     */
    error: FrameworkError;
}
/**
 * 统一错误处理器
 */
export declare class ErrorHandler {
    private config;
    private monitoring?;
    constructor(config?: ErrorHandlerConfig);
    /**
     * 设置监控服务
     */
    setMonitoring(monitoring: MonitoringService): void;
    /**
     * 处理错误
     *
     * @param error - 错误对象
     * @param context - 错误上下文
     * @returns 错误处理结果
     */
    handleError(error: unknown, context?: Record<string, unknown>): Promise<ErrorHandleResult>;
    /**
     * 确定错误处理策略
     */
    private determineStrategies;
    /**
     * 执行处理策略
     */
    private executeStrategies;
    /**
     * 记录错误
     */
    private logError;
    /**
     * 上报错误
     */
    private reportError;
    /**
     * 尝试恢复错误
     */
    private attemptRecovery;
    /**
     * 创建错误处理器的便捷方法
     */
    static create(config?: ErrorHandlerConfig): ErrorHandler;
}
/**
 * 获取默认错误处理器
 */
export declare function getDefaultErrorHandler(): ErrorHandler;
/**
 * 设置默认错误处理器
 */
export declare function setDefaultErrorHandler(handler: ErrorHandler): void;
//# sourceMappingURL=ErrorHandler.d.ts.map