/**
 * Lazy Browser Manager - Only connects when MCP tools are actually used
 * Prevents any browser connections during VS Code startup
 */
import { ConnectionState, PageInfo, BrowserActionResult } from '../types/index.js';
export declare enum InitializationState {
    NOT_INITIALIZED = "not_initialized",
    INITIALIZING = "initializing",
    READY = "ready",
    FAILED = "failed"
}
export declare class LazyBrowserManager {
    private connection;
    private initState;
    private config;
    private initPromise;
    private lastError;
    private connectionPool;
    private resourceManager;
    constructor();
    /**
     * Check if manager is ready (initialized and connected)
     */
    isReady(): boolean;
    /**
     * Get current status without triggering initialization
     */
    getStatus(): {
        state: InitializationState;
        connected: boolean;
        connectionState?: ConnectionState;
        lastError?: string;
    };
    /**
     * Initialize connection pool for performance optimization
     */
    private initializeConnectionPool;
    /**
     * Initialize connection to browser (lazy - only when first needed)
     * This is the ONLY method that actually connects to browser
     */
    ensureConnection(): Promise<void>;
    /**
     * Perform the actual browser connection
     */
    private performInitialization;
    /**
     * Execute a browser action, ensuring connection is established first
     * This is the main entry point for all browser operations
     */
    executeAction<T>(actionName: string, action: () => Promise<T>): Promise<T>;
    /**
     * Send command to browser (with lazy initialization)
     */
    sendCommand(method: string, params?: any): Promise<any>;
    /**
     * Get available pages (with lazy initialization)
     */
    getPages(): Promise<PageInfo[]>;
    /**
     * Navigate to URL (with lazy initialization)
     */
    navigate(url: string): Promise<BrowserActionResult>;
    /**
     * Take screenshot (with lazy initialization)
     */
    screenshot(): Promise<BrowserActionResult>;
    /**
     * Click element (with lazy initialization)
     */
    click(selector: string, options?: any): Promise<BrowserActionResult>;
    /**
     * Type text (with lazy initialization)
     */
    type(text: string, options?: any): Promise<BrowserActionResult>;
    /**
     * Get page content (with lazy initialization)
     */
    getContent(selector?: string): Promise<BrowserActionResult>;
    /**
     * Disconnect and cleanup
     */
    disconnect(): Promise<void>;
}
export declare function createLazyBrowserManager(): LazyBrowserManager;
//# sourceMappingURL=LazyBrowserManager.d.ts.map