import { MobileAccessibilityState } from '../react-native/accessibility-provider';
import { GestureEvent, GestureType } from '../gestures/accessible-gestures';

export interface MobileTestSuite {
    id: string;
    name: string;
    description: string;
    platform: 'ios' | 'android' | 'all';
    tests: MobileAccessibilityTest[];
}
export interface MobileAccessibilityTest {
    id: string;
    name: string;
    description: string;
    category: 'visual' | 'motor' | 'cognitive' | 'sensory' | 'navigation';
    severity: 'low' | 'medium' | 'high' | 'critical';
    automated: boolean;
    implementation: TestImplementation;
}
export interface TestImplementation {
    setup?: () => Promise<void>;
    execute: () => Promise<TestResult>;
    cleanup?: () => Promise<void>;
}
export interface TestResult {
    passed: boolean;
    score: number;
    message: string;
    details: any;
    recommendations: string[];
    platform: string;
    timestamp: Date;
}
export interface MockGestureEvent {
    type: GestureType;
    duration: number;
    distance: number;
    velocity: number;
    fingerCount: number;
    location: {
        x: number;
        y: number;
    };
}
export interface AccessibilityAssertion {
    type: 'screenReader' | 'contrast' | 'textSize' | 'touchTarget' | 'gesture' | 'navigation';
    element?: any;
    expected: any;
    actual?: any;
    tolerance?: number;
}
/**
 * Cross-Platform Mobile Testing Manager
 */
export declare class MobileTestingManager {
    private testSuites;
    private mockState;
    private testResults;
    constructor();
    /**
     * Register a test suite
     */
    registerTestSuite(suite: MobileTestSuite): void;
    /**
     * Run accessibility tests
     */
    runTests(suiteId?: string, platform?: 'ios' | 'android' | 'all'): Promise<{
        summary: {
            total: number;
            passed: number;
            failed: number;
            score: number;
        };
        results: TestResult[];
        recommendations: string[];
    }>;
    /**
     * Create mock gesture event
     */
    createMockGesture(config: Partial<MockGestureEvent>): GestureEvent;
    /**
     * Assert accessibility requirements
     */
    assertAccessibility(assertion: AccessibilityAssertion): Promise<TestResult>;
    /**
     * Test color contrast compliance
     */
    testColorContrast(foreground: string, background: string, level?: 'AA' | 'AAA'): Promise<TestResult>;
    /**
     * Test touch target sizes
     */
    testTouchTargets(elements: Array<{
        width: number;
        height: number;
        label: string;
    }>): Promise<TestResult>;
    /**
     * Test gesture accessibility
     */
    testGestureAccessibility(gestures: GestureType[]): Promise<TestResult>;
    /**
     * Mock accessibility state for testing
     */
    setMockAccessibilityState(state: Partial<MobileAccessibilityState>): void;
    /**
     * Get mock accessibility state
     */
    getMockAccessibilityState(): Partial<MobileAccessibilityState>;
    /**
     * Test with different accessibility settings
     */
    testWithAccessibilitySettings(settings: Partial<MobileAccessibilityState>, testFunction: () => Promise<void>): Promise<TestResult>;
    /**
     * Generate accessibility test report
     */
    generateReport(): {
        summary: {
            totalTests: number;
            passedTests: number;
            overallScore: number;
            platform: string;
        };
        categories: Record<string, {
            tests: number;
            passed: number;
            score: number;
        }>;
        recommendations: string[];
        details: TestResult[];
    };
    private initializeDefaultTestSuites;
    private assertScreenReaderCompatibility;
    private assertColorContrast;
    private assertTextSize;
    private assertTouchTargetSize;
    private assertGestureSupport;
    private assertKeyboardNavigation;
    private calculateContrastRatio;
    private hasGestureAlternatives;
}
export default MobileTestingManager;
//# sourceMappingURL=cross-platform-testing.d.ts.map