import { Page } from 'playwright';
import { ScanResult, ScanOptions, BrowserConfig, RuleEngineConfig } from '../types';
import { ResilienceConfig } from './error-resilience';
import { WCAGLevelConfig } from './wcag-level-handler';
export interface KeyboardNavigationResult {
    tabOrder: string[];
    unreachableElements: string[];
    focusTraps: string[];
    missingFocusIndicators: string[];
    issues: string[];
}
export interface ScanResultWithKeyboard extends ScanResult {
    keyboardNavigation?: KeyboardNavigationResult;
}
export interface ScreenReaderSimulationResult {
    tree: any;
    missingNames: string[];
    ambiguousRoles: string[];
    skippedElements: string[];
    summary: string[];
}
export interface ScanResultWithA11y extends ScanResultWithKeyboard {
    screenReaderSimulation?: ScreenReaderSimulationResult;
}
export interface CognitiveAccessibilityResult {
    readingLevel: number;
    readingLevelCategory: 'easy' | 'average' | 'difficult';
    jargonTerms: string[];
    abbreviationCount: number;
    summary: string[];
}
export interface ScanResultWithCognitive extends ScanResultWithA11y {
    cognitiveAccessibility?: CognitiveAccessibilityResult;
    summary?: string[];
    groupedWarnings?: Record<string, string[]>;
}
export declare function simulateKeyboardNavigation(page: Page): Promise<KeyboardNavigationResult>;
export declare function simulateScreenReader(page: Page): Promise<ScreenReaderSimulationResult>;
export declare function analyzeCognitiveAccessibility(page: Page): Promise<CognitiveAccessibilityResult>;
/**
 * Core single page accessibility scanner
 * Implements WCAG 2.2 AA testing with hybrid rule engine and JavaScript rendering support
 */
export declare class PageScanner {
    private browserManager;
    private ruleEngine;
    private resilienceManager;
    private wcagLevelHandler;
    private isInitialized;
    constructor(browserConfig?: BrowserConfig, ruleEngineConfig?: RuleEngineConfig, resilienceConfig?: Partial<ResilienceConfig>, wcagLevelConfig?: Partial<WCAGLevelConfig>);
    /**
     * Initialize the page scanner with browser and rule engine setup
     */
    initialize(): Promise<void>;
    /**
     * Scan a single page for accessibility issues with JavaScript rendering support
     * @param url - URL to scan
     * @param options - Scanning options
     * @returns Promise<ScanResult>
     */
    scan(url: string, options?: Partial<ScanOptions>): Promise<ScanResultWithCognitive>;
    /**
* Update rule engine configuration based on scan options
* @private
*/
    private updateRuleEngineConfig;
    /**
     * Wait for page to be fully ready including JavaScript execution
     * @private
     */
    private waitForPageReady;
    /**
     * Extract comprehensive page metadata
     * @private
     */
    private extractPageMetadata;
    /**
     * Transform rule results to accessibility issues
     * @private
     */
    private transformRuleResultToIssues;
    /**
     * Map axe impact levels to severity levels
     * @private
     */
    private mapImpactToSeverity;
    /**
     * Extract element name from HTML string
     * @private
     */
    private extractElementName;
    /**
     * Calculate accessibility score based on issues and page complexity
     * @private
     */
    private calculateAccessibilityScore;
    /**
     * Validate URL format
     * @private
     */
    private isValidUrl;
    /**
     * Get current scanner status
     */
    getStatus(): {
        initialized: boolean;
        browserStatus: any;
        ruleEngineConfig: any;
        resilienceStatus: any;
        wcagLevelConfig: any;
    };
    /**
     * Get detailed resilience metrics and status
     */
    getResilienceStatus(): {
        config: ResilienceConfig;
        activeOperations: number;
        circuitBreakers: {
            name: string;
            state: import("./error-resilience").CircuitBreakerState;
            failureCount: number;
        }[];
        operationMetrics: {
            [k: string]: import("./error-resilience").OperationMetrics;
        };
    };
    /**
     * Reset resilience state (circuit breakers, metrics, etc.)
     */
    resetResilience(): void;
    /**
     * Update scanner configuration
     */
    updateConfiguration(browserConfig?: Partial<BrowserConfig>, ruleEngineConfig?: Partial<RuleEngineConfig>, resilienceConfig?: Partial<ResilienceConfig>, wcagLevelConfig?: Partial<WCAGLevelConfig>): Promise<void>;
    /**
     * Cleanup browser and other resources
     */
    cleanup(): Promise<void>;
    /**
     * Set storage state (cookies, localStorage, etc.) for the browser context
     */
    setStorageState(storageState: any): Promise<void>;
}
//# sourceMappingURL=page-scanner.d.ts.map