import { Buffer } from 'buffer';
export interface AccessibilityIssue {
    type: 'missing_alt_text' | 'heading_structure' | 'table_headers' | 'link_text' | 'metadata' | 'reading_order' | 'color_contrast';
    severity: 'low' | 'medium' | 'high' | 'critical';
    description: string;
    location?: string;
    wcagCriteria: string[];
    suggestion: string;
}
export interface AccessibilityFix {
    type: string;
    description: string;
    applied: boolean;
    wcagImprovement: string[];
    beforeValue?: string;
    afterValue?: string;
}
export interface ToolExecutionResult {
    toolName: string;
    success: boolean;
    issuesFound: AccessibilityIssue[];
    fixesApplied: AccessibilityFix[];
    processing_time_ms: number;
    error?: string;
}
export interface PdfAnalysisContext {
    buffer: Buffer;
    fileName: string;
    pageCount: number;
    textContent: string;
    hasImages: boolean;
    hasTables: boolean;
    hasLinks: boolean;
    language: string;
    wcagLevel: 'A' | 'AA' | 'AAA';
}
export interface AccessibilityToolInterface {
    getName(): string;
    getDescription(): string;
    getSupportedWCAGCriteria(): string[];
    canProcess(context: PdfAnalysisContext): boolean;
    execute(context: PdfAnalysisContext, llmProvider?: any): Promise<ToolExecutionResult>;
}
export declare class AccessibilityToolsManager {
    private tools;
    private executionLog;
    constructor();
    private initializeTools;
    registerTool(tool: AccessibilityToolInterface): void;
    getAvailableTools(): string[];
    getToolDescription(toolName: string): string | null;
    /**
     * Analyze PDF and determine which tools should be executed based on content
     */
    analyzeAndRecommendTools(context: PdfAnalysisContext): Promise<{
        recommendedTools: string[];
        reasoning: string[];
        estimatedComplexity: 'simple' | 'moderate' | 'complex';
    }>;
    /**
     * Execute specific tools in optimized order
     */
    executeTools(toolNames: string[], context: PdfAnalysisContext, llmProvider?: any): Promise<{
        results: ToolExecutionResult[];
        summary: {
            totalIssues: number;
            totalFixes: number;
            processingTime: number;
            success: boolean;
        };
    }>;
    /**
     * Optimize tool execution order for best results
     */
    private optimizeToolOrder;
    /**
     * Get execution statistics
     */
    getExecutionStats(): {
        totalExecutions: number;
        successRate: number;
        averageProcessingTime: number;
        mostUsedTools: string[];
    };
    /**
     * Generate comprehensive accessibility report
     */
    generateAccessibilityReport(results: ToolExecutionResult[], wcagLevel: string): {
        summary: string;
        detailedFindings: any;
        complianceScore: number;
        recommendations: string[];
    };
    private groupIssuesByType;
    private groupFixesBySeverity;
}
