import type { BrowserCapabilityRequest, BrowserSession, BrowserSessionMode, BrowserStatus, PageHandle, PersistentBrowserMetadata, PersistentExecutionMode, PersistentState, SiteBrowserPreference } from './session.js'; export type { BrowserSession, BrowserStatus, PageHandle } from './session.js'; export interface SessionTransport { openPage(url: string): Promise; listPages(): Promise; closePage(page: PageHandle): Promise; requestVisibleBrowser?(reason: string): Promise; } export declare function createMemoryTransport(): SessionTransport & { pages: PageHandle[]; }; declare abstract class BaseSession implements BrowserSession { readonly mode: BrowserSessionMode; protected readonly transport: SessionTransport; constructor(mode: BrowserSessionMode, transport: SessionTransport); ensureReady(): Promise; openPage(url: string): Promise; listPages(): Promise; closePage(page: PageHandle): Promise; requestVisibleBrowser(reason: string): Promise; abstract getStatus(): Promise; shutdown(): Promise; } export declare class FreshSession extends BaseSession { constructor(transport: SessionTransport); getStatus(): Promise; } export type PersistentEvent = 'bootstrap-needed' | 'bootstrap-opened' | 'bootstrap-closed' | 'automation-started' | 'automation-succeeded' | 'auth-required' | 'reauth-opened' | 'reauth-completed' | 'headless-incompatible'; export declare function nextPersistentState(state: PersistentState, event: PersistentEvent): PersistentState; export declare function normalizeOrigin(urlOrOrigin: string): string; export declare function resolveExecutionForOrigin(preferences: SiteBrowserPreference[], urlOrOrigin: string, fallback?: PersistentExecutionMode): PersistentExecutionMode; export declare function rememberExecutionPreference(preferences: SiteBrowserPreference[], urlOrOrigin: string, executionMode: PersistentExecutionMode): SiteBrowserPreference[]; export interface PersistentSessionOptions { transport: SessionTransport; metadata: PersistentBrowserMetadata; initialState?: PersistentState; executionMode?: PersistentExecutionMode; sitePreferences?: SiteBrowserPreference[]; } export declare class PersistentSession extends BaseSession { private persistentState; private executionMode; private sitePreferences; private metadata; constructor(options: PersistentSessionOptions); get persistentStatus(): PersistentState; get currentExecutionMode(): PersistentExecutionMode; get preferences(): SiteBrowserPreference[]; send(event: PersistentEvent): PersistentState; executionFor(urlOrOrigin: string): PersistentExecutionMode; markHeadlessIncompatible(urlOrOrigin: string): void; getStatus(): Promise; } export declare class ExistingSession extends BaseSession { constructor(transport: SessionTransport); getStatus(): Promise; } export interface ManagedSessions { fresh: BrowserSession; persistent: BrowserSession; existing: BrowserSession; } export declare function resolveModeForCapabilities(request: BrowserCapabilityRequest, persistentInitialized: boolean): BrowserSessionMode; export type PersistentEscalation = 'headless' | 'headed-auth-then-headless' | 'headed-background' | 'suggest-existing'; export declare function nextPersistentEscalation(reason: 'works' | 'login-needed' | 'headless-incompatible'): PersistentEscalation; export declare function assertExistingBrokerAvailable(available: boolean): void; export declare class BrowserSessionManager { private readonly sessions; private current; constructor(sessions: ManagedSessions); getMode(): BrowserSessionMode; getSession(mode?: BrowserSessionMode): BrowserSession; switchTo(mode: BrowserSessionMode): Promise; require(request: BrowserCapabilityRequest): Promise; shutdownAll(): Promise; } //# sourceMappingURL=session-manager.d.ts.map