/**
 * WebTool.ts — 网页内容抓取工具
 *
 * 通过 `fetch_webpage` 工具获取一个或多个 URL 的页面文本，
 * 提取正文并按 `query` 关键词定位相关片段，供 AI 分析使用。
 *
 * LLM 工具定义：`fetch_webpage`
 */
/** 工具函数定义（OpenAI Function Calling 格式） */
export interface ToolDefinition {
    type: 'function';
    function: {
        name: string;
        description: string;
        parameters: Record<string, unknown>;
    };
}
/** WebTool 运行时配置 */
export interface WebToolConfig {
    /** 单个 URL 返回的最大字符数（默认 6000） */
    maxContentLength?: number;
    /** 请求超时毫秒数（默认 15000） */
    timeoutMs?: number;
    [key: string]: unknown;
}
/** 单个 URL 的抓取结果 */
export interface FetchResult {
    url: string;
    title?: string;
    contentType?: string;
    matchedQuery?: boolean;
    truncated?: boolean;
    content?: string;
    error?: string;
}
/** fetch_webpage 工具返回值 */
export interface FetchWebpageResult {
    query: string;
    results: FetchResult[];
}
/** parseWebpageContent 返回值 */
interface ParsedContent {
    title: string;
    content: string;
}
declare class WebTool {
    /** LLM 可见的工具定义列表 */
    static readonly definitions: ToolDefinition[];
    private config;
    /** 更新工具运行时配置（由 CopilotTools.setToolConfig 调用）。 */
    setConfig(config: WebToolConfig): void;
    /**
     * 执行指定工具函数。
     *
     * @param name   - 工具名（目前仅支持 'fetch_webpage'）
     * @param args   - 工具参数（urls 数组 + query 字符串）
     * @param config - 运行时配置
     */
    execute(name: string, args: {
        urls?: string[];
        query?: string;
    } | unknown, config?: WebToolConfig): Promise<string | FetchWebpageResult>;
    /**
     * 抓取单个 URL 的页面内容，按 query 提取相关片段。
     *
     * @param url     - 目标 URL
     * @param query   - 用于定位相关内容的查询词
     * @param options - 配置（maxContentLength / timeoutMs）
     */
    fetchWebpageContent(url: string, query: string, options?: {
        maxContentLength?: number;
        timeoutMs?: number;
    }): Promise<FetchResult>;
    /**
     * 判断是否应直接返回原始内容（Markdown / JSON / 非 HTML）。
     */
    shouldReturnRawContent(url: string, contentType?: string): boolean;
    /**
     * 解析原始 HTML / 文本，提取标题和正文。
     * 浏览器环境使用 DOMParser；SSR 环境使用正则兜底。
     *
     * @param rawText     - 原始页面文本
     * @param contentType - HTTP Content-Type 响应头
     */
    parseWebpageContent(rawText: string, contentType?: string): ParsedContent;
    /**
     * 从 document 中选取主内容节点（main / article / [role="main"] 等优先）。
     * 回退到 document.body。
     */
    selectMainContentNode(doc: Document): Element | null;
    /** 从原始 HTML 字符串提取 `<title>` 内容（DOMParser 不可用时兜底）。 */
    extractTitleFromHtml(rawText: string): string;
    /** 压缩多余空白字符，返回干净的单行文本。 */
    normalizeWebpageText(text: string): string;
    /**
     * 在正文中找到 query 词汇最早出现位置，提取上下文片段。
     * 未匹配时返回空字符串。
     *
     * @param content   - 已规范化的正文文本
     * @param query     - 查询关键词（空格分隔）
     * @param maxLength - 返回片段最大字符数（默认 1800）
     */
    buildQuerySnippet(content: string, query: string, maxLength?: number): string;
}
export default WebTool;
//# sourceMappingURL=WebTool.d.ts.map