/**
 * File Summarization Service
 *
 * Orchestrates the end-to-end file summarization pipeline:
 *  1. Accept raw file inputs (strings or Buffers)
 *  2. Extract readable text and estimate tokens
 *  3. Use `planFileSummarization()` to decide which files to summarize
 *  4. Call an LLM to produce context-aware summaries of the largest files
 *  5. Fall back to truncation when the LLM call fails
 *
 * The LLM is instantiated via a *dynamic import* of NeuroLink to avoid
 * circular dependency issues (NeuroLink → fileSummarizationService → NeuroLink).
 */
import { type FileForSummarization, type FileSummarizationCheckParams, type SummarizedFile } from "./fileSummarizer.js";
import type { RawFileInput } from "../types/contextTypes.js";
export type { RawFileInput } from "../types/contextTypes.js";
/** Constructor options. */
type FileSummarizationServiceOptions = {
    /** Provider used for the summarization LLM call (default: "vertex") */
    provider?: string;
    /** Model used for the summarization LLM call (default: "gemini-2.5-flash") */
    model?: string;
};
export declare class FileSummarizationService {
    private readonly provider;
    private readonly model;
    constructor(options?: FileSummarizationServiceOptions);
    /**
     * Extract readable text from a file's content.
     *
     * - Strings are returned as-is.
     * - Buffers are decoded as UTF-8 when the MIME type is textual.
     * - Known-binary types (image/*, audio/*, video/*) return a placeholder.
     */
    extractFileText(content: string | Buffer, mimeType: string, fileName: string): string;
    /**
     * Map a MIME type (and filename for fallback) to a human-readable label.
     */
    getFileTypeLabel(mimeType: string, fileName: string): string;
    /**
     * Convert an array of raw file inputs into `FileForSummarization` objects.
     *
     * Extracts text and estimates token count for each file.
     */
    prepareFilesForSummarization(files: RawFileInput[], provider?: string): FileForSummarization[];
    /**
     * Summarize files that exceed the context budget.
     *
     * For each file marked "summarize" by `planFileSummarization()`, we call
     * the configured LLM to produce a context-aware summary. If the LLM call
     * fails, we fall back to naive truncation so the request can still proceed.
     */
    summarizeFiles(files: FileForSummarization[], userPrompt: string, budgetParams: FileSummarizationCheckParams): Promise<SummarizedFile[]>;
}
