import { ISearchAdapter } from './ISearchAdapter.js';
import { SearchOptions, SearchResult, DomainSampleResult } from './types.js';
import winston from 'winston';
/**
 * Main search service that provides a unified interface to search adapters
 * with fallback support and error handling.
 */
export declare class SearchService {
    private readonly logger;
    private adapter;
    private readonly fallbackAdapters;
    constructor(primaryAdapter: ISearchAdapter, fallbacks?: ISearchAdapter[], logger?: winston.Logger);
    /**
     * Set a new primary adapter
     * @param adapter The new primary adapter to use
     */
    setAdapter(adapter: ISearchAdapter): void;
    /**
     * Add a fallback adapter
     * @param adapter The fallback adapter to add
     */
    addFallbackAdapter(adapter: ISearchAdapter): void;
    /**
     * Get the current primary adapter name
     * @returns The name of the primary adapter
     */
    getPrimaryAdapterName(): string;
    /**
     * Get the names of all fallback adapters
     * @returns Array of fallback adapter names
     */
    getFallbackAdapterNames(): string[];
    /**
     * Fetch content from a URL with fallback support
     * @param url The URL to fetch content from
     * @returns Promise resolving to the content
     */
    fetchContent(url: string): Promise<string>;
    /**
     * Sample domain with fallback support
     * @param domain The domain to sample from
     * @param count Number of samples to collect
     * @returns Promise resolving to array of sampled content
     */
    sampleDomain(domain: string, count: number): Promise<DomainSampleResult[]>;
    /**
     * Search with fallback support
     * @param query The search query
     * @param options Optional search parameters
     * @returns Promise resolving to search results
     */
    search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
    /**
     * Check health of all adapters
     * @returns Promise resolving to health status of primary and fallback adapters
     */
    healthCheck(): Promise<{
        primary: {
            name: string;
            healthy: boolean;
            error?: string;
        };
        fallbacks: Array<{
            name: string;
            healthy: boolean;
            error?: string;
        }>;
    }>;
}
//# sourceMappingURL=SearchService.d.ts.map