/** * Browser session management with Playwright integration */ import { ChromiumBrowser, Page } from 'playwright'; import { EventEmitter } from 'events'; import { BrowserProfile } from './profile'; import { BrowserStateSummary, TabInfo } from './views'; import { ClickElementEvent, NavigateToUrlEvent, ScreenshotEvent, TargetID, TypeTextEvent } from './events'; export interface BrowserSessionConfig { profile?: BrowserProfile; headless?: boolean; timeout?: number; } export declare class BrowserSession extends EventEmitter { private browser; private context; private pages; private currentPageId; profile: BrowserProfile; private isStarted; private _loggedUniqueSessionIds; readonly id: string; agentFocus: { targetId: string; } | null; eventBus: this; cdpUrl?: string; downloadedFiles: string[]; watchdogs: any[]; constructor(config?: BrowserSessionConfig); /** * Get dynamic logger with session and target ID for consistent logging */ get logger(): import("winston").Logger; /** * Get human-friendly semi-unique identifier for differentiating different BrowserSession instances in logs */ private get _idForLogs(); /** * Get formatted target ID for logs */ private get _targetIdForLogs(); /** * String representation for logs */ toString(): string; /** * Dispatch an event and return a promise-like object for chaining * This method provides compatibility with the expected event dispatch pattern */ dispatch(event: any): { eventResult: () => Promise; }; start(): Promise; stop(): Promise; navigateToUrl(event: NavigateToUrlEvent): Promise; clickElement(event: ClickElementEvent): Promise; typeText(event: TypeTextEvent): Promise; takeScreenshot(event: ScreenshotEvent): Promise; getBrowserState(): Promise; switchTab(targetId?: TargetID): Promise; closeTab(targetId: TargetID): Promise; private getInternalCurrentPage; private generatePageId; private nodeToSelector; private setupPageEventListeners; get isRunning(): boolean; get currentTabId(): TargetID | null; get tabCount(): number; get browserProfile(): BrowserProfile; getCurrentPage(): Page; getTabs(): Promise; getCurrentPageUrl(): Promise; getCurrentPageTitle(): Promise; addInitScript(script: string): Promise; getCurrentTargetId(): string | null; getElementByIndex(index: number): Promise; isFileInput(node: any): boolean; getOrCreateCdpSession(): any; get cdpClient(): any; /** * Get list of downloaded files */ getDownloadedFiles(): Promise; /** * Get selector map for elements (stub implementation) * TODO: Implement proper selector mapping */ getSelectorMap(): Promise>; /** * Get target ID from tab ID (stub implementation) */ getTargetIdFromTabId(tabId: string): Promise; /** * Get target ID from URL (stub implementation) */ getTargetIdFromUrl(url: string): Promise; /** * Get most recently opened target ID (stub implementation) */ getMostRecentlyOpenedTargetId(): Promise; sendKeys(event: { keys: string; }): Promise; scroll(event: { down: boolean; num_pages: number; }): Promise; scrollToText(event: { text: string; direction?: 'up' | 'down'; }): Promise; uploadFile(event: { index: number; path: string; }): Promise; /** * Create a mock EnhancedDOMTreeNode that passes validation * This is a simplified approach for testing without full DOM integration */ private createMockDOMNode; /** * Get DOM state with selector map for current page */ private getDOMState; /** * Get the number of open pages/tabs */ getPageCount(): number; /** * Create a new blank page */ createNewPage(url?: string): Promise; /** * Switch to the most recently opened page/tab */ switchToLatestPage(): Promise; /** * Go back in browser history */ goBack(): Promise; /** * List all tabs (alias for getTabs for compatibility) */ listTabs(): Promise; /** * Remove highlights from the page (placeholder implementation) */ removeHighlights(): Promise; /** * Get the underlying browser instance */ getBrowser(): ChromiumBrowser | null; /** * Check if this is a local browser session */ get isLocal(): boolean; } //# sourceMappingURL=session.d.ts.map