/**
 * PDF Processor with Image Fallback Support
 *
 * Handles PDF processing for all providers:
 * - Native PDF support for providers that accept PDF directly (Google AI, Vertex, OpenAI, Anthropic, Bedrock)
 * - PDF → Image conversion for providers that don't support native PDF (Azure, Mistral, Ollama)
 *
 * The conversion uses pdf-to-img package (MuPDF-based) for high-quality conversion.
 */
import type { FileProcessingResult, PDFProcessorOptions, PDFProviderConfig, PDFImageConversionOptions, PDFImageConversionResult } from "../types/index.js";
export declare class PDFProcessor {
    private static readonly PDF_SIGNATURE;
    static process(content: Buffer, options?: PDFProcessorOptions): Promise<FileProcessingResult>;
    /**
     * Check if a provider supports native PDF input
     * @param provider - Provider name
     * @returns true if provider can accept PDF directly, false if requires image conversion
     */
    static supportsNativePDF(provider: string): boolean;
    static getProviderConfig(provider: string): PDFProviderConfig | null;
    private static isValidPDF;
    private static extractBasicMetadata;
    static estimateTokens(pageCount: number, mode?: "text-only" | "visual"): number;
    /**
     * Convert a PDF buffer to an array of base64 PNG images
     *
     * This is used automatically when a provider (like Azure, Mistral, Ollama) doesn't
     * support native PDF input but does support image input. The PDF pages are converted
     * to PNG images and sent as vision content.
     *
     * @param pdfBuffer - PDF file content as Buffer
     * @param options - Conversion options
     * @returns Promise with conversion result including base64 images
     *
     * @example
     * ```typescript
     * // Check if conversion is needed
     * if (!PDFProcessor.supportsNativePDF('azure')) {
     *   const result = await PDFProcessor.convertToImages(pdfBuffer, {
     *     scale: 2,
     *     maxPages: 10
     *   });
     *   // Use images in LLM input instead of PDF
     *   options.input.images = result.images;
     * }
     * ```
     */
    static convertToImages(pdfBuffer: Buffer, options?: PDFImageConversionOptions): Promise<PDFImageConversionResult>;
    /**
     * Convert a PDF file path to an array of base64 PNG images
     *
     * @param pdfPath - Path to the PDF file
     * @param options - Conversion options
     * @returns Promise with conversion result
     */
    static convertFromPath(pdfPath: string, options?: PDFImageConversionOptions): Promise<PDFImageConversionResult>;
    /**
     * Check if PDF to image conversion is available
     * Useful for feature detection
     *
     * @returns true if pdf-to-img package is available
     */
    static isImageConversionAvailable(): Promise<boolean>;
    /**
     * Get estimated memory usage for converting a PDF
     *
     * @param pdfSizeBytes - Size of PDF file in bytes
     * @param pageCount - Estimated number of pages
     * @param scale - Scale factor
     * @returns Estimated memory usage in MB
     */
    static estimateConversionMemoryUsage(pdfSizeBytes: number, pageCount: number, scale?: number): number;
    /**
     * Get list of providers that require PDF → Image conversion
     */
    static getImageFallbackProviders(): string[];
    /**
     * Get list of providers that support native PDF
     */
    static getNativePDFProviders(): string[];
}
export declare const PDFImageConverter: typeof PDFProcessor;
