import { FileStateCache } from '../../state/file-cache.js';
import { ProjectIndex } from '../../state/project-index.js';
import { CodeIntelligence } from '../../intelligence/facade.js';
import type { ImageMode } from './media.js';
import type { ReadFileInput, ExtractMode, OutputFormat } from './schema.js';
export interface FileReadResult {
    path: string;
    resolvedPath: string;
    content?: string;
    lineCount: number;
    byteSize: number;
    tokenEstimate: number;
    extract: ExtractMode;
    binary?: boolean;
    image?: boolean;
    mediaType?: string;
    error?: string;
    cache?: {
        status: 'miss' | 'unchanged' | 'modified';
    };
    metadata?: {
        encoding: string;
        sizeBytes: number;
        cacheStatus: string;
    };
    imageData?: {
        base64: string;
        mediaType: string;
    };
    imageMetadata?: {
        width?: number;
        height?: number;
        format: string;
        fileSize: number;
        resized?: boolean;
        converted?: boolean;
        originalFormat?: string;
        mode?: ImageMode;
    };
    archive?: boolean;
}
export interface ReadOutput {
    success: boolean;
    error?: string;
    files?: FileReadResult[];
    images?: Array<{
        path: string;
        base64: string;
        mediaType: string;
        description: string;
    }>;
    summary: {
        files_read: number;
        files_binary: number;
        files_errored: number;
        total_lines: number;
        total_tokens: number;
    };
    pagination?: {
        page: number;
        total_pages: number;
        pending_files: string[];
    };
}
export interface ReadExecutionContext {
    format: OutputFormat;
    includeLineNumbers: boolean;
    maxPerItem?: number;
    fileCache: FileStateCache;
    projectIndex: ProjectIndex;
    globalImageMode?: ImageMode;
    maxImageSize: number;
    codeIntelligence?: Pick<CodeIntelligence, 'getOutline' | 'getSymbols'>;
}
export interface ReadTarget {
    fileInput: ReadFileInput;
    resolvedPath: string;
    extract: ExtractMode;
}
export declare function readOneFile(fileInput: ReadFileInput, globalExtract: ExtractMode, format: OutputFormat, includeLineNumbers: boolean, maxPerItem: number | undefined, fileCache: FileStateCache, projectIndex: ProjectIndex, globalImageMode?: ImageMode, globalMaxImageSize?: number, codeIntelligence?: Pick<CodeIntelligence, 'getOutline' | 'getSymbols'>): Promise<FileReadResult>;
export declare function paginateFiles(files: ReadFileInput[], tokenBudget: number, projectRoot: string): Array<number[]>;
//# sourceMappingURL=file-readers.d.ts.map