/** * Primary environment registry for camofox-browser. * * Server-side env reads are centralized here. CLI-only reads (CAMOFOX_API_KEY, * CAMOFOX_CLI_USER) and ambient host reads (DISPLAY) remain at their call sites. */ export interface ProxyConfig { host: string; port: string; username: string; password: string; } export interface FingerprintDefaults { os?: 'windows' | 'macos' | 'linux' | Array<'windows' | 'macos' | 'linux'>; allowWebgl?: boolean; screen?: { width: number; height: number; }; humanize?: boolean; } export interface ServerEnv { PATH?: string; HOME?: string; NODE_ENV?: string; DISPLAY?: string; HANDLER_TIMEOUT_MS?: string; MAX_CONCURRENT_PER_USER?: string; CAMOFOX_ADMIN_KEY?: string; CAMOFOX_API_KEY?: string; CAMOFOX_AUTH_MODE?: string; CAMOFOX_HOST?: string; CAMOFOX_ALLOW_PRIVATE_NETWORK?: string; CAMOFOX_CONSOLE_BUFFER_SIZE?: string; CAMOFOX_COOKIES_DIR?: string; CAMOFOX_PROFILES_DIR?: string; CAMOFOX_DOWNLOADS_DIR?: string; CAMOFOX_DOWNLOAD_TTL_MS?: string; CAMOFOX_MAX_DOWNLOAD_SIZE_MB?: string; CAMOFOX_IDLE_TIMEOUT_MS?: string; CAMOFOX_IDLE_EXIT_TIMEOUT_MS?: string; CAMOFOX_SERVER_PID_FILE?: string; CAMOFOX_MAX_BATCH_CONCURRENCY?: string; CAMOFOX_MAX_BLOB_SIZE_MB?: string; CAMOFOX_MAX_DOWNLOADS_PER_USER?: string; CAMOFOX_MAX_SESSIONS?: string; CAMOFOX_MAX_SNAPSHOT_CHARS?: string; CAMOFOX_MAX_SNAPSHOT_NODES?: string; CAMOFOX_MAX_TABS?: string; CAMOFOX_PRESETS_FILE?: string; CAMOFOX_PROXY_PROFILES_FILE?: string; CAMOFOX_SESSION_TIMEOUT?: string; CAMOFOX_SNAPSHOT_TAIL_CHARS?: string; CAMOFOX_BUILDREFS_TIMEOUT_MS?: string; CAMOFOX_TAB_LOCK_TIMEOUT_MS?: string; CAMOFOX_TRACES_DIR?: string; CAMOFOX_TRACE_MAX_DURATION_MS?: string; CAMOFOX_HEALTH_PROBE_INTERVAL_MS?: string; CAMOFOX_FAILURE_THRESHOLD?: string; CAMOFOX_VNC_BASE_PORT?: string; CAMOFOX_VNC_HOST?: string; CAMOFOX_YT_DLP_TIMEOUT_MS?: string; CAMOFOX_YT_BROWSER_TIMEOUT_MS?: string; CAMOFOX_VNC_RESOLUTION?: string; CAMOFOX_VNC_TIMEOUT_MS?: string; CAMOFOX_HEADLESS?: string; CAMOFOX_EVAL_EXTENDED_RATE_LIMIT_MAX?: string; CAMOFOX_EVAL_EXTENDED_RATE_LIMIT_WINDOW_MS?: string; CAMOFOX_OS?: string; CAMOFOX_ALLOW_WEBGL?: string; CAMOFOX_SCREEN_WIDTH?: string; CAMOFOX_SCREEN_HEIGHT?: string; CAMOFOX_HUMANIZE?: string; PROXY_HOST?: string; PROXY_PORT?: string; PROXY_USERNAME?: string; PROXY_PASSWORD?: string; } export interface AppConfig { port: number; host: string; nodeEnv: string; adminKey: string; apiKey: string; authMode: AuthMode; allowPrivateNetworkTargets: boolean; cookiesDir: string; profilesDir: string; downloadsDir: string; downloadTtlMs: number; maxDownloadSizeMb: number; maxBatchConcurrency: number; maxBlobSizeMb: number; maxDownloadsPerUser: number; handlerTimeoutMs: number; maxConcurrentPerUser: number; maxSnapshotChars: number; snapshotTailChars: number; tracesDir: string; traceMaxDurationMs: number; maxSnapshotNodes: number; consoleBufferSize: number; sessionTimeoutMs: number; maxSessions: number; maxTabsPerSession: number; vncTimeoutMs: number; vncBasePort: number; vncHost: string; presetsFile: string | undefined; proxyProfilesFile: string | undefined; idleTimeoutMs: number; idleExitTimeoutMs: number; buildRefsTimeoutMs: number; tabLockTimeoutMs: number; healthProbeIntervalMs: number; failureThreshold: number; ytDlpTimeoutMs: number; ytBrowserTimeoutMs: number; vncResolution: string; headless: boolean | 'virtual'; evalExtendedRateLimitMax: number; evalExtendedRateLimitWindowMs: number; proxy: ProxyConfig; serverEnv: ServerEnv; fingerprintDefaults: FingerprintDefaults; } export interface ConfigEnv extends NodeJS.ProcessEnv { CAMOFOX_PORT?: string; PORT?: string; NODE_ENV?: string; CAMOFOX_ADMIN_KEY?: string; CAMOFOX_API_KEY?: string; CAMOFOX_AUTH_MODE?: string; CAMOFOX_HOST?: string; CAMOFOX_ALLOW_PRIVATE_NETWORK?: string; CAMOFOX_CONSOLE_BUFFER_SIZE?: string; CAMOFOX_COOKIES_DIR?: string; CAMOFOX_PROFILES_DIR?: string; CAMOFOX_DOWNLOADS_DIR?: string; CAMOFOX_DOWNLOAD_TTL_MS?: string; CAMOFOX_MAX_DOWNLOAD_SIZE_MB?: string; CAMOFOX_IDLE_TIMEOUT_MS?: string; CAMOFOX_IDLE_EXIT_TIMEOUT_MS?: string; CAMOFOX_SERVER_PID_FILE?: string; CAMOFOX_MAX_BATCH_CONCURRENCY?: string; CAMOFOX_MAX_BLOB_SIZE_MB?: string; CAMOFOX_MAX_DOWNLOADS_PER_USER?: string; CAMOFOX_MAX_SESSIONS?: string; CAMOFOX_MAX_SNAPSHOT_CHARS?: string; CAMOFOX_MAX_SNAPSHOT_NODES?: string; CAMOFOX_MAX_TABS?: string; CAMOFOX_PRESETS_FILE?: string; CAMOFOX_PROXY_PROFILES_FILE?: string; CAMOFOX_SNAPSHOT_TAIL_CHARS?: string; CAMOFOX_SESSION_TIMEOUT?: string; HANDLER_TIMEOUT_MS?: string; MAX_CONCURRENT_PER_USER?: string; CAMOFOX_BUILDREFS_TIMEOUT_MS?: string; CAMOFOX_TAB_LOCK_TIMEOUT_MS?: string; CAMOFOX_TRACES_DIR?: string; CAMOFOX_TRACE_MAX_DURATION_MS?: string; CAMOFOX_HEALTH_PROBE_INTERVAL_MS?: string; CAMOFOX_FAILURE_THRESHOLD?: string; CAMOFOX_YT_DLP_TIMEOUT_MS?: string; CAMOFOX_YT_BROWSER_TIMEOUT_MS?: string; CAMOFOX_VNC_BASE_PORT?: string; CAMOFOX_VNC_HOST?: string; CAMOFOX_VNC_RESOLUTION?: string; CAMOFOX_VNC_TIMEOUT_MS?: string; CAMOFOX_HEADLESS?: string; CAMOFOX_EVAL_EXTENDED_RATE_LIMIT_MAX?: string; CAMOFOX_EVAL_EXTENDED_RATE_LIMIT_WINDOW_MS?: string; CAMOFOX_OS?: string; CAMOFOX_ALLOW_WEBGL?: string; CAMOFOX_SCREEN_WIDTH?: string; CAMOFOX_SCREEN_HEIGHT?: string; CAMOFOX_HUMANIZE?: string; PROXY_HOST?: string; PROXY_PORT?: string; PROXY_USERNAME?: string; PROXY_PASSWORD?: string; PATH?: string; HOME?: string; DISPLAY?: string; } export type AuthMode = 'auto' | 'required' | 'disabled'; export declare function isLoopbackHost(host: string): boolean; export declare function assertServerExposureSafety(config: Pick): void; export declare function loadConfig(env?: ConfigEnv): AppConfig; //# sourceMappingURL=config.d.ts.map