import { IAnalysisSectionEntry } from "../orchestrate/common/structures/IAnalysisSectionEntry";
import { EmbeddingProvider } from "./EmbeddingProvider";
export interface RequirementSection {
    filename: `${string}.md`;
    heading: string;
    content: string;
    index: number;
    level: 2 | 3;
}
export interface RetrievalHit {
    section: RequirementSection;
    score: number;
    reason: string;
}
export interface VectorIndexItem {
    id: string;
    section: RequirementSection;
    vector: number[];
    tf: Map<string, number>;
    docLen: number;
}
export interface Bm25Stats {
    N: number;
    avgdl: number;
    df: Map<string, number>;
}
export declare function buildVectorIndexHybrid(embedder: EmbeddingProvider, sections: RequirementSection[]): Promise<{
    index: VectorIndexItem[];
    bm25: Bm25Stats;
}>;
export declare function retrieveTopKAdaptiveHybrid(embedder: EmbeddingProvider, queryText: string, index: VectorIndexItem[], bm25: Bm25Stats, kMin?: number, kMax?: number, wVec?: number, wBm25?: number, debug?: boolean): Promise<RetrievalHit[]>;
export declare function clearIndexCache(): void;
/**
 * Analysis context mode for RAG control.
 *
 * - "TOPK": Use RAG retrieval (section-level hybrid search)
 * - "FULL": Use all analysis sections without filtering (no RAG call)
 * - "NONE": Use no analysis sections (no RAG call)
 */
export type AnalysisContextMode = "TOPK" | "FULL" | "NONE";
export interface BuildAnalysisContextOptions {
    kMin?: number;
    kMax?: number;
    splitCount?: number;
    log?: boolean;
    logPrefix?: string;
}
/**
 * Build analysis context at section granularity.
 *
 * Operates on `IAnalysisSectionEntry[]` from `convertToSectionEntries`. Each
 * section entry is treated as an independent retrieval unit (~200-600 words),
 * yielding fine-grained context for downstream agents.
 *
 * Uses SHA256-based index caching to avoid rebuilding the vector index when
 * called repeatedly with the same section pool (e.g. across batch items in
 * `executeCachedBatch`).
 *
 * @param embedder - Embedding provider for vector search (only used in TOPK)
 * @param sections - Source section entries (from convertToSectionEntries)
 * @param query - Query text for retrieval (only used in TOPK mode)
 * @param mode - Analysis context mode (NONE/FULL/TOPK)
 * @param options - Optional parameters for retrieval tuning
 * @returns Filtered or full section entries based on mode
 */
export declare function buildAnalysisContextSections(embedder: EmbeddingProvider, sections: IAnalysisSectionEntry[], query: string, mode: AnalysisContextMode, options?: BuildAnalysisContextOptions): Promise<IAnalysisSectionEntry[]>;
