import { ISearchAdapter } from '../ISearchAdapter.js';
import { SearchOptions, SearchResult, DomainSampleResult, SearchAdapterConfig } from '../types.js';
import winston from 'winston';
export interface WebScrapingConfig extends SearchAdapterConfig {
    sampleSize?: number;
    maxRequestsPerSecond?: number;
    timeout?: number;
    userAgent?: string;
}
export interface ScrapedBlogPost {
    title: string;
    content: string;
    url: string;
    publishedDate?: string;
    author?: string;
    excerpt?: string;
}
/**
 * Web scraping adapter that implements the ISearchAdapter interface.
 * Migrates existing WebScrapingService logic to the adapter pattern.
 */
export declare class WebScrapingAdapter implements ISearchAdapter {
    private readonly logger;
    private httpClient;
    private config;
    private lastRequestTime;
    private initialized;
    constructor(logger?: winston.Logger);
    getName(): string;
    initialize(config: WebScrapingConfig): Promise<void>;
    healthCheck(): Promise<boolean>;
    fetchContent(url: string): Promise<string>;
    sampleDomain(domain: string, count: number): Promise<DomainSampleResult[]>;
    search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
    private ensureInitialized;
    private discoverBlogPosts;
    private extractPostUrls;
    private extractUrlsFromXml;
    private fetchBlogPost;
    private extractTitle;
    private extractContent;
    private extractPublishedDate;
    private extractAuthor;
    private extractExcerpt;
    private resolveUrl;
    private isValidPostUrl;
    private respectRateLimit;
}
//# sourceMappingURL=WebScrapingAdapter.d.ts.map