import type { SearchInput, SearchOutput, StageResult, ProgressCallback, SearchEngine } from '../types.js';
import type { SmartRouter } from '../fetch/router.js';
import type { BackendStatus } from '../server/backend-status.js';
import type { SamplingCapableServer } from '../search/sampling.js';
/**
 * Runtime dependencies the legacy SearxNG orchestrator needs. These are wired
 * at server boot (search engines, fetch router) and per-call (sampling server,
 * progress callback). The provider interface accepts them so the tool handler
 * can remain a thin pass-through.
 */
export interface SearchContext {
    engines: SearchEngine[];
    router: SmartRouter;
    backendStatus?: BackendStatus;
    samplingServer?: SamplingCapableServer;
    onProgress?: ProgressCallback;
}
export interface SearchProvider {
    search(input: SearchInput, ctx: SearchContext): Promise<StageResult<SearchOutput>>;
    /** Best-effort name for telemetry/logging. */
    readonly name: 'core' | 'searxng' | 'hybrid';
}
export declare function getSearchProvider(): Promise<SearchProvider>;
export declare function _resetSearchProviderForTest(): void;
//# sourceMappingURL=search-provider.d.ts.map