/**
 * Browser Automation Manager
 *
 * Provides unified interface for both Playwright and Puppeteer
 * with automatic fallback and optimal selection
 */
export type BrowserEngine = 'playwright' | 'puppeteer';
export type BrowserType = 'chromium' | 'firefox' | 'webkit';
interface BrowserOptions {
    engine?: BrowserEngine;
    browserType?: BrowserType;
    headless?: boolean;
    viewport?: {
        width: number;
        height: number;
    };
    userAgent?: string;
    timeout?: number;
}
interface UnifiedPage {
    goto(url: string): Promise<void>;
    screenshot(options?: ScreenshotOptions): Promise<Buffer>;
    evaluate<T>(fn: (...args: any[]) => T, ...args: any[]): Promise<T>;
    click(selector: string): Promise<void>;
    type(selector: string, text: string): Promise<void>;
    waitForSelector(selector: string, options?: {
        timeout?: number;
    }): Promise<void>;
    close(): Promise<void>;
    content(): Promise<string>;
    title(): Promise<string>;
    url(): string;
    setViewport?(viewport: {
        width: number;
        height: number;
    }): Promise<void>;
}
interface ScreenshotOptions {
    fullPage?: boolean;
    clip?: {
        x: number;
        y: number;
        width: number;
        height: number;
    };
    quality?: number;
    type?: 'png' | 'jpeg';
}
export declare class BrowserManager {
    private playwrightBrowser?;
    private puppeteerBrowser?;
    private currentEngine?;
    private isInitialized;
    /**
     * Initialize browser with specified engine
     */
    initialize(options?: BrowserOptions): Promise<void>;
    /**
     * Create a new page with unified interface
     */
    newPage(): Promise<UnifiedPage>;
    /**
     * Take screenshot with automatic tiling for large pages
     */
    captureScreenshot(url: string, options?: {
        fullPage?: boolean;
        tileSize?: number;
        viewport?: {
            width: number;
            height: number;
        };
    }): Promise<Buffer[]>;
    /**
     * Execute automation script
     */
    executeAutomation(script: {
        url: string;
        actions: Array<{
            type: 'click' | 'type' | 'wait' | 'screenshot' | 'evaluate';
            selector?: string;
            text?: string;
            duration?: number;
            code?: string;
        }>;
    }): Promise<any[]>;
    /**
     * Extract structured data from page
     */
    extractData(url: string, selectors: Record<string, string>): Promise<Record<string, any>>;
    /**
     * Close all browsers
     */
    close(): Promise<void>;
    /**
     * Initialize Playwright
     */
    private initializePlaywright;
    /**
     * Initialize Puppeteer
     */
    private initializePuppeteer;
    /**
     * Select optimal engine based on availability and features
     */
    private selectOptimalEngine;
    /**
     * Wrap Playwright page with unified interface
     */
    private wrapPlaywrightPage;
    /**
     * Wrap Puppeteer page with unified interface
     */
    private wrapPuppeteerPage;
    /**
     * Capture screenshot tiles for large pages
     */
    private captureScreenshotTiles;
}
export {};
//# sourceMappingURL=browser-manager.d.ts.map