export { ValidationMiddleware, validationMiddleware, ValidationResult } from './validation.js';
export { SanitizationMiddleware, sanitizationMiddleware, SanitizationOptions } from './sanitization.js';
export { ErrorHandlingMiddleware, errorHandlingMiddleware, BaseError, ValidationError as MiddlewareValidationError, SanitizationError, DatabaseError, SearchError, ExternalApiError, NotFoundError, ConfigurationError, TimeoutError, ErrorCode, ErrorDetails } from './error-handling.js';
import { ToolArguments, ToolResponse } from '../types/index.js';
export interface MiddlewareOptions {
    skipValidation?: boolean;
    skipSanitization?: boolean;
    sanitizationOptions?: {
        allowHtml?: boolean;
        stripScripts?: boolean;
        maxStringLength?: number;
        allowedTags?: string[];
        allowedAttributes?: string[];
    };
    timeout?: number;
}
export declare class MiddlewareChain {
    private static instance;
    private constructor();
    static getInstance(): MiddlewareChain;
    processToolCall<T>(toolName: string, input: ToolArguments, operation: (sanitizedInput: ToolArguments) => Promise<T>, options?: MiddlewareOptions): Promise<T>;
    handleError(error: Error, toolName?: string): ToolResponse;
    wrapDatabaseOperation<T>(operation: () => Promise<T>, operationName: string, timeout?: number): Promise<T>;
    wrapSearchOperation<T>(operation: () => Promise<T>, operationName: string, timeout?: number): Promise<T>;
    wrapExternalApiOperation<T>(operation: () => Promise<T>, operationName: string, timeout?: number): Promise<T>;
    validateMongoQuery(query: any): any;
}
export declare const middlewareChain: MiddlewareChain;
