/** * Shared proxy URL parsing for Playwright and Puppeteer wrappers. */ export interface ParsedProxy { server: string; username?: string; password?: string; } /** * Prepend http:// to schemeless proxy URLs so parsers can extract hostname. * Used by geoip resolution which only needs a valid hostname, not auth fields. */ export declare function ensureProxyScheme(proxyUrl: string): string; /** * Parse a proxy URL, extracting credentials into separate fields. * * Handles: "http://user:pass@host:port" -> { server: "http://host:port", username: "user", password: "pass" } * Also handles: no credentials, URL-encoded special chars, socks5://, missing port, * and bare proxy strings without a scheme (e.g. "user:pass@host:port" -> treated as http). */ /** Proxy dict shape accepted by Playwright/Puppeteer wrappers. */ export type ProxyDict = { server: string; bypass?: string; username?: string; password?: string; }; /** Result of resolveProxyConfig — either Playwright dict OR Chrome arg, never both. */ export interface ProxyConfig { /** Playwright proxy option (for HTTP proxies). */ proxyOption?: ParsedProxy; /** Chrome CLI args (for SOCKS5 proxies, e.g. ["--proxy-server=socks5://..."]). */ proxyArgs: string[]; } /** * Check if a proxy uses the SOCKS5 protocol. */ export declare function isSocksProxy(proxy: string | ProxyDict | undefined | null): boolean; /** * Reconstruct a SOCKS5 URL with inline credentials from a proxy dict. */ export declare function reconstructSocksUrl(proxy: ProxyDict): string; /** * Re-encode credentials in a SOCKS5 URL string so Chromium's parser doesn't * truncate them at special chars like '='. Idempotent: pre-encoded input stays * the same (decoded then re-encoded). * * Parsing is done manually rather than via `new URL` + setters, because WHATWG * URL's username/password setters re-encode `%` on assignment, causing * double-encoding when we round-trip decode-then-encode. * * On any unexpected failure, logs a warning and returns the original string * so Chromium's own error handling can surface the real problem. */ export declare function normalizeSocksStringUrl(urlStr: string): string; export declare function supportsHttpProxyInlineAuth(): boolean; /** * Reconstruct an HTTP(S) proxy URL with inline credentials from a proxy dict. */ export declare function reconstructHttpUrl(proxy: ProxyDict): string; /** * Re-encode credentials in an HTTP(S) proxy URL string for --proxy-server. * Same pattern as normalizeSocksStringUrl. */ export declare function normalizeHttpStringUrl(urlStr: string): string; /** * Resolve proxy into Playwright option and/or Chrome args. * * Proxies with credentials (SOCKS5 or HTTP/HTTPS on supported platforms) are * passed via Chrome's --proxy-server flag with inline credentials, bypassing * Playwright's CDP auth interceptor which breaks on some proxies (#182). */ export declare function resolveProxyConfig(proxy: string | ProxyDict | undefined): ProxyConfig; export declare function parseProxyUrl(proxy: string): ParsedProxy; //# sourceMappingURL=proxy.d.ts.map