import { type SearchResults } from "duck-duck-scrape"; import type { BaseChatModel } from "@langchain/core/language_models/chat_models"; import type { ChatXAI } from "@langchain/xai"; export declare class WebCrawler { private readonly chatModel; private turndown; private visitedUrls; private MAX_DEPTH; private MAX_PAGES; private sourceReferences; constructor(chatModel: BaseChatModel | ChatXAI); getBestMatchUrl: (input: string, results: SearchResults) => Promise; /** * Extract domain from URL */ private extractDomain; /** * Extract potential publish date from HTML */ private extractPublishDate; /** * Extract links from HTML content */ private extractLinks; /** * Fetch and process a single page */ private fetchPage; /** * Determine if we should continue researching based on content relevance */ private shouldContinueResearch; /** * Get a source reference number, creating a new one if needed */ private getSourceReference; /** * Format sources in markdown with Perplexity-style numbered references */ private formatSourcesMarkdown; /** * Summarize research findings with Perplexity-style references */ private summarizeResearch; /** * Perform deep research on a topic */ deepResearch(query: string): Promise; /** * Legacy generator method - kept for backward compatibility * @deprecated Use deepResearch instead */ searchWeb: (input: string) => AsyncGenerator; }