import EventEmitter from "eventemitter3";
import { BrowserContext, Page } from "playwright";
export interface TabEvents {
    'tabChanged': (page: Page) => void;
}
export interface TabState {
    activeTab: number;
    tabs: {
        title: string;
        url: string;
    }[];
}
export interface TabManagerOptions {
    switchOnActivity?: boolean;
}
export declare class TabManager {
    private context;
    private activePage;
    private options;
    private pollInterval?;
    readonly events: EventEmitter<TabEvents>;
    constructor(context: BrowserContext, options?: TabManagerOptions);
    initialize(): Promise<void>;
    private initializeExistingPages;
    private onPageCreated;
    private setupPageTracking;
    private startActivityPolling;
    setActivePage(page: Page): void;
    switchTab(index: number): Promise<void>;
    getActivePage(): Page;
    getPages(): Page[];
    retrieveState(): Promise<TabState>;
    debugVisibilityStates(): Promise<({
        hasFocus: boolean;
        hidden: boolean;
        visibilityState: DocumentVisibilityState;
        index: number;
        url: string;
        error?: undefined;
    } | {
        index: number;
        url: string;
        error: boolean;
    })[]>;
    debugFocusStates(): Promise<({
        hasFocus: boolean;
        isVisible: boolean;
        isHidden: boolean;
        url: string;
        index: number;
        error?: undefined;
    } | {
        index: number;
        url: string;
        error: boolean;
    })[]>;
    destroy(): void;
}
