import { type PlaywrightTestConfig } from '@playwright/test';
export interface PlatformConfig {
    /** Platform name used in project naming (e.g., 'mentornextjs', 'skills') */
    name: string;
    /** Devices to test on. Defaults to all 4 desktop browsers */
    devices?: string[];
    /** Dependencies for this platform (e.g., ['setup']) */
    dependencies?: string[];
    /** Additional test file patterns to match */
    otherTestMatch?: string[];
    /** Test files to ignore */
    testIgnore?: string[];
}
export interface CreatePlaywrightConfigOptions {
    /** Directory containing test files (relative to config file) */
    testDir?: string;
    /** Devices to use across all platforms. Defaults to Chrome, Firefox, Safari, Edge */
    devices?: string[];
    /** Platform configurations */
    platforms: PlatformConfig[];
    /** Path to custom reporter module (relative to config file). Defaults to './custom-reporter' */
    customReporterPath?: string;
    /** Additional cleanup or post-test projects */
    extraProjects?: Array<{
        name: string;
        devices?: string[];
        dependencies: string[];
        testMatch: string[];
    }>;
}
/** Extract browser key from device name (e.g., 'Desktop Chrome' -> 'chrome') */
export declare function getBrowserKey(deviceName: string): string;
/**
 * Generate per-browser setup projects for Playwright authentication.
 * Each browser gets its own auth setup project (setup-chrome, setup-firefox, etc.)
 */
export declare function generateBrowserSetupProjects(devicesToUse: string[]): {
    name: string;
    testMatch: RegExp;
    use: {
        viewport: import("@playwright/test").ViewportSize;
        userAgent: string;
        deviceScaleFactor: number;
        isMobile: boolean;
        hasTouch: boolean;
        defaultBrowserType: "chromium" | "firefox" | "webkit";
    };
}[];
/**
 * Generate a Playwright project config for a platform + device combination.
 */
export declare function generateProjectConfig(platform: string, deviceName: string, dependencies?: string[], otherTestMatch?: string[], testIgnoreMatch?: string[]): {
    name: string;
    testMatch: string[];
    use: {
        storageState: string;
        viewport: import("@playwright/test").ViewportSize;
        userAgent: string;
        deviceScaleFactor: number;
        isMobile: boolean;
        hasTouch: boolean;
        defaultBrowserType: "chromium" | "firefox" | "webkit";
    };
    dependencies: string[];
    testIgnore: string[];
};
/**
 * Create a complete Playwright configuration for an IBL.ai application.
 *
 * Usage:
 * ```ts
 * import { createPlaywrightConfig } from '@iblai/iblai-js/playwright';
 *
 * export default createPlaywrightConfig({
 *   platforms: [
 *     { name: 'skills', dependencies: ['setup'], otherTestMatch: ['**skills/*\/*.spec.ts'] },
 *   ],
 * });
 * ```
 */
export declare function createPlaywrightConfig(options: CreatePlaywrightConfigOptions): PlaywrightTestConfig;
