import { ErrorHandler } from './ErrorHandler';
import { Logger } from '../../utils/logger';
export interface McpToolContext {
    toolName: string;
    arguments: Record<string, unknown>;
    requestId?: string;
    userId?: string;
}
export interface McpPromptContext {
    promptName: string;
    arguments: Record<string, unknown>;
    requestId?: string;
    userId?: string;
}
export interface McpErrorConfig {
    criticalTools: string[];
    criticalPrompts: string[];
    errorTypeMappings: Record<string, string>;
    severityOverrides: Record<string, 'low' | 'medium' | 'high' | 'critical'>;
}
export interface ErrorClassification {
    isNetworkError: boolean;
    isTimeoutError: boolean;
    isAuthError: boolean;
    isValidationError: boolean;
    isConfigurationError: boolean;
    originalError: Error;
}
export declare class McpErrorWrapper {
    private readonly errorHandler;
    private readonly logger;
    private config;
    constructor(errorHandler: ErrorHandler, logger: Logger, config?: Partial<McpErrorConfig>);
    wrapToolExecution<T>(toolFunction: () => Promise<T>, context: McpToolContext): Promise<T>;
    wrapPromptExecution<T>(promptFunction: () => Promise<T>, context: McpPromptContext): Promise<T>;
    wrapWithRetry<T>(operation: () => Promise<T>, context: {
        operationName: string;
        requestId?: string;
    }, retryOptions?: {
        maxRetries?: number;
        baseDelay?: number;
        maxDelay?: number;
        shouldRetry?: (error: Error) => boolean;
    }): Promise<T>;
    private determineSeverity;
    private shouldNotifyForTool;
    private shouldNotifyForPrompt;
    private classifyError;
    private createClassificationFromType;
    updateConfig(config: Partial<McpErrorConfig>): void;
    getConfig(): McpErrorConfig;
    private delay;
    /**
     * Convert a standard error to an appropriate BaseError type based on classification
     */
    private convertToTypedError;
}
export declare function createMcpErrorWrapper(errorHandler: ErrorHandler, logger: Logger, config?: Partial<McpErrorConfig>): McpErrorWrapper;
export declare function withToolErrorHandling(errorWrapper: McpErrorWrapper, toolName: string): (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
export declare function withPromptErrorHandling(errorWrapper: McpErrorWrapper, promptName: string): (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
//# sourceMappingURL=McpErrorWrapper.d.ts.map