/**
 * MCP Handlers — 搜索类
 *
 * v2: 合并原 4 个搜索函数（search / contextSearch / keywordSearch / semanticSearch）
 * 为统一 search() 入口，通过 mode 参数路由。
 * consolidated.ts 的 mode 路由直接指向本函数。
 *
 * 设计原则：
 * 1. 通过 container.get('searchEngine') 获取 singleton 实例（含 vectorStore + aiProvider）
 * 2. 统一 responseTime、byKind 分组、kind 过滤
 * 3. 投影使用 SearchTypes.slimSearchResult()（消除 3 处重复投影）
 */
import { type SlimSearchResult } from '#service/search/SearchTypes.js';
import type { McpContext, SearchArgs, SearchResultItem } from './types.js';
/**
 * 统一搜索入口 — 支持 auto / keyword / weighted / semantic / context 五种模式
 *
 * 合并了原 search / contextSearch / keywordSearch / semanticSearch 4 个函数。
 * mode 路由:
 *   - auto (默认): FieldWeighted + semantic 融合 + Ranking Pipeline
 *   - keyword: SQL LIKE 精确匹配，适合已知函数名/类名
 *   - weighted: 加权字段评分搜索（原 bm25 模式，已替换为 FieldWeightedScorer）
 *   - bm25: weighted 的向后兼容别名
 *   - semantic: 向量语义搜索（不可用时降级 weighted）
 *   - context: weighted + Ranking Pipeline + 会话上下文加成
 *
 * 所有模式共享: kind 过滤 → slimSearchResult 投影 → byKind 分组
 */
export declare function search(ctx: McpContext, args: SearchArgs): Promise<{
    success: boolean;
    errorCode: string | null;
    message: string;
    data: {
        metadata?: {
            responseTimeMs: number;
            totalResults: any;
            kindCounts: {
                rule: number;
                pattern: number;
                fact: number;
            };
        } | undefined;
        degraded?: boolean | undefined;
        degradedReason?: string | undefined;
        query: string;
        mode: any;
        kind: string | undefined;
        totalResults: any;
        items: any;
        byKind: {
            rule: {
                kind?: string;
            }[];
            pattern: {
                kind?: string;
            }[];
            fact: {
                kind?: string;
            }[];
        };
        kindCounts: {
            rule: number;
            pattern: number;
            fact: number;
        };
    } | null;
    meta: {
        source?: string | undefined;
        responseTimeMs?: number | undefined;
        version: string;
        tool?: string | undefined;
    };
}>;
/** contextSearch — mode='context' 的别名 */
export declare function contextSearch(ctx: McpContext, args: SearchArgs): Promise<{
    success: boolean;
    errorCode: string | null;
    message: string;
    data: {
        metadata?: {
            responseTimeMs: number;
            totalResults: any;
            kindCounts: {
                rule: number;
                pattern: number;
                fact: number;
            };
        } | undefined;
        degraded?: boolean | undefined;
        degradedReason?: string | undefined;
        query: string;
        mode: any;
        kind: string | undefined;
        totalResults: any;
        items: any;
        byKind: {
            rule: {
                kind?: string;
            }[];
            pattern: {
                kind?: string;
            }[];
            fact: {
                kind?: string;
            }[];
        };
        kindCounts: {
            rule: number;
            pattern: number;
            fact: number;
        };
    } | null;
    meta: {
        source?: string | undefined;
        responseTimeMs?: number | undefined;
        version: string;
        tool?: string | undefined;
    };
}>;
/** keywordSearch — mode='keyword' 的别名 */
export declare function keywordSearch(ctx: McpContext, args: SearchArgs): Promise<{
    success: boolean;
    errorCode: string | null;
    message: string;
    data: {
        metadata?: {
            responseTimeMs: number;
            totalResults: any;
            kindCounts: {
                rule: number;
                pattern: number;
                fact: number;
            };
        } | undefined;
        degraded?: boolean | undefined;
        degradedReason?: string | undefined;
        query: string;
        mode: any;
        kind: string | undefined;
        totalResults: any;
        items: any;
        byKind: {
            rule: {
                kind?: string;
            }[];
            pattern: {
                kind?: string;
            }[];
            fact: {
                kind?: string;
            }[];
        };
        kindCounts: {
            rule: number;
            pattern: number;
            fact: number;
        };
    } | null;
    meta: {
        source?: string | undefined;
        responseTimeMs?: number | undefined;
        version: string;
        tool?: string | undefined;
    };
}>;
/** semanticSearch — mode='semantic' 的别名 */
export declare function semanticSearch(ctx: McpContext, args: SearchArgs): Promise<{
    success: boolean;
    errorCode: string | null;
    message: string;
    data: {
        metadata?: {
            responseTimeMs: number;
            totalResults: any;
            kindCounts: {
                rule: number;
                pattern: number;
                fact: number;
            };
        } | undefined;
        degraded?: boolean | undefined;
        degradedReason?: string | undefined;
        query: string;
        mode: any;
        kind: string | undefined;
        totalResults: any;
        items: any;
        byKind: {
            rule: {
                kind?: string;
            }[];
            pattern: {
                kind?: string;
            }[];
            fact: {
                kind?: string;
            }[];
        };
        kindCounts: {
            rule: number;
            pattern: number;
            fact: number;
        };
    } | null;
    meta: {
        source?: string | undefined;
        responseTimeMs?: number | undefined;
        version: string;
        tool?: string | undefined;
    };
}>;
/** @deprecated Use `slimSearchResult` from `SearchTypes.ts` instead */
export declare function _slimSearchItem(item: SearchResultItem): SlimSearchResult;
