export interface BootstrapState { status: 'downloading' | 'ready' | 'failed' | 'no_runtime'; searxngPath?: string; attempts?: number; lastAttemptAt?: string; nextRetryAt?: string; lastError?: { message: string; stderr: string; exitCode: number | null; command: string; timestamp: string; }; /** @deprecated legacy field; read-only for back-compat. Never written by new code. */ error?: string; } export declare function backoffSchedule(attempt: number): number | null; export interface BootstrapErrorDetail { stderr: string; exitCode: number | null; command: string; } export declare class BootstrapError extends Error { readonly detail: BootstrapErrorDetail; constructor(detail: BootstrapErrorDetail); } export declare function runStep(command: string, args: string[], opts: { timeout: number; }): void; export declare function acquireBootstrapLock(dataDir: string): () => void; export interface WaitForBootstrapOpts { timeoutMs: number; intervalMs: number; } export declare function waitForBootstrap(dataDir: string, opts: WaitForBootstrapOpts): Promise<'ready' | 'failed'>; export interface BackendResolution { type: 'external' | 'native' | 'docker' | 'scraping'; url?: string; searxngPath?: string; } export declare function checkPythonAvailable(): boolean; export declare function checkDockerAvailable(): boolean; /** * SearXNG does not support running natively on Windows — upstream stdlib * imports (e.g. `searx/valkeydb.py`'s unconditional `import pwd`) assume a * POSIX host and crash on start regardless of the Python/venv setup being * otherwise correct. Upstream's guidance is to use the Docker image on * unsupported OSes (github.com/searxng/searxng/discussions/4029), so native * bootstrap should never be attempted on win32. */ export declare function isNativeSearxngSupported(platform?: string): boolean; export declare function getBootstrapState(dataDir: string): BootstrapState | null; export declare function setBootstrapState(dataDir: string, state: BootstrapState): void; export declare function generateSettings(port: number, secretKey?: string): string; export declare function resolveSearchBackend(): Promise; export declare function bootstrapNativeSearxng(dataDir: string): Promise; //# sourceMappingURL=bootstrap.d.ts.map