import type { AgentBrowserBounds } from '../../shared/agent-browser'; export type PortListener = (...args: unknown[]) => void; export interface AgentBrowserDebuggerPort { attach(protocolVersion: string): void; detach(): void; isAttached(): boolean; sendCommand( method: string, params?: Record, sessionRef?: string, ): Promise; on(event: 'message' | 'detach', listener: PortListener): void; removeListener(event: 'message' | 'detach', listener: PortListener): void; } export interface AgentBrowserNavigationPort { canGoBack(): boolean; canGoForward(): boolean; goBack(): void; goForward(): void; clear(): void; } export interface AgentBrowserWebContentsPort { readonly debugger: AgentBrowserDebuggerPort; readonly navigationHistory: AgentBrowserNavigationPort; loadURL(url: string): Promise; getURL(): string; getTitle(): string; isDestroyed(): boolean; isDevToolsOpened(): boolean; reload(): void; denyWindowOpen(): void; on(event: string, listener: PortListener): void; removeListener(event: string, listener: PortListener): void; } export interface AgentBrowserViewPort { readonly webContents: AgentBrowserWebContentsPort; setBounds(bounds: AgentBrowserBounds): void; setVisible(visible: boolean): void; } export interface AgentBrowserAdapter { createView(partition: string): AgentBrowserViewPort; mount(view: AgentBrowserViewPort): void; unmount(view: AgentBrowserViewPort): void; destroy(view: AgentBrowserViewPort): void; resetPartition(partition: string): Promise; }