/** * Browser Provider Abstraction * * Supports multiple remote browser services: * - Browserless.io: Standard CDP-compatible endpoint * - Bright Data: Anti-bot focused with proxy-based approach * - Custom: Any CDP-compatible WebSocket endpoint * * Usage: * Set BROWSER_PROVIDER=browserless and BROWSERLESS_TOKEN=xxx * Or BROWSER_PROVIDER=brightdata and BRIGHTDATA_AUTH=user:pass * Or BROWSER_ENDPOINT=wss://your-custom-endpoint */ import { BROWSERLESS_PLANS, type BrowserlessPlanLimits, type BrowserlessUsageStats } from './browserless-rate-limiter.js'; export type BrowserProviderType = 'local' | 'browserless' | 'brightdata' | 'custom'; export interface BrowserProviderConfig { type: BrowserProviderType; browserlessToken?: string; browserlessUrl?: string; browserlessPlan?: keyof typeof BROWSERLESS_PLANS; brightdataAuth?: string; brightdataZone?: string; brightdataCountry?: string; customEndpoint?: string; timeout?: number; } export interface ProviderCapabilities { antiBot: boolean; geoTargeting: boolean; sessionPersistence: boolean; residential: boolean; unlimitedBandwidth: boolean; } export interface BrowserProvider { readonly name: string; readonly type: BrowserProviderType; readonly capabilities: ProviderCapabilities; /** * Get the WebSocket endpoint URL for Playwright connect */ getEndpoint(): string; /** * Validate that required credentials are configured */ validate(): { valid: boolean; error?: string; }; /** * Get additional connection options if needed */ getConnectionOptions(): Record; /** * Acquire a connection slot (for rate-limited providers) * Returns a release function to call when done */ acquireSlot?(sessionId: string): Promise<() => void>; /** * Get rate limiting stats (for rate-limited providers) */ getUsageStats?(): BrowserlessUsageStats; /** * Get plan limits (for rate-limited providers) */ getPlanLimits?(): BrowserlessPlanLimits; } /** * Create a browser provider based on configuration */ export declare function createProvider(config?: Partial): BrowserProvider; /** * Get information about all available providers */ export declare function getProviderInfo(): Array<{ type: BrowserProviderType; name: string; configured: boolean; capabilities: ProviderCapabilities; envVars: string[]; }>; //# sourceMappingURL=browser-providers.d.ts.map