/**
 * Chrome Launcher - Manages separate Chrome instances for MCP
 * Launches Chrome with debugging in a separate profile to avoid interfering with user's main Chrome
 */
/// <reference types="node" resolution-mode="require"/>
import { ChildProcess } from 'child_process';
export interface ChromeLaunchOptions {
    debugPort?: number;
    profilePath?: string;
    headless?: boolean;
    userAgent?: string;
    windowSize?: {
        width: number;
        height: number;
    };
    args?: string[];
    copyUserData?: boolean;
    sourceProfilePath?: string;
}
export interface ChromeInstance {
    process: ChildProcess;
    debugPort: number;
    profilePath: string;
    pid: number;
    startTime: Date;
}
export declare class ChromeLauncher {
    private config;
    private runningInstances;
    private verbose;
    constructor(verbose?: boolean);
    /**
     * Check if Chrome is available for debugging on the specified port
     */
    isDebugPortAvailable(port: number): Promise<boolean>;
    /**
     * Get the default Chrome user data directory for the current platform
     */
    private getDefaultChromeUserDataDir;
    /**
     * Find Chrome executable path for the current platform
     */
    private getChromePath;
    /**
     * Copy user's Chrome data to MCP profile directory
     */
    private copyUserChromeData;
    /**
     * Prepare Chrome profile directory with optional user data copying
     */
    private prepareProfileDirectory;
    /**
     * Launch a separate Chrome instance for MCP use
     */
    launchSeparateChrome(options?: ChromeLaunchOptions): Promise<ChromeInstance>;
    /**
     * Wait for Chrome to be ready for debugging
     */
    private waitForChromeReady;
    /**
     * Get or launch Chrome instance for MCP use
     */
    getOrLaunchChrome(options?: ChromeLaunchOptions): Promise<ChromeInstance>;
    /**
     * Close a specific Chrome instance
     */
    closeInstance(instance: ChromeInstance): Promise<void>;
    /**
     * Close all MCP Chrome instances
     */
    closeAllInstances(): Promise<void>;
    /**
     * Get information about running instances
     */
    getRunningInstances(): ChromeInstance[];
    /**
     * Check if Chrome executable exists
     */
    isChromeAvailable(): boolean;
}
export declare function createChromeLauncher(verbose?: boolean): ChromeLauncher;
//# sourceMappingURL=ChromeLauncher.d.ts.map