import type { RepomixConfigMerged } from '../../config/configSchema.js';
import type { RepomixProgressCallback } from '../../shared/types.js';
import type { ProcessedFile } from '../file/fileTypes.js';
import type { GitDiffResult } from '../git/gitDiffHandle.js';
import type { GitLogResult } from '../git/gitLogHandle.js';
import { type MetricsTaskRunner } from './metricsWorkerRunner.js';
import type { TokenEncoding } from './TokenCounter.js';
export interface CalculateMetricsResult {
    totalFiles: number;
    totalCharacters: number;
    totalTokens: number;
    fileCharCounts: Record<string, number>;
    fileTokenCounts: Record<string, number>;
    gitDiffTokenCount: number;
    gitLogTokenCount: number;
}
export interface MetricsTaskRunnerWithWarmup {
    taskRunner: MetricsTaskRunner;
    warmupPromise: Promise<unknown>;
}
export declare const createMetricsTaskRunner: (numOfTasks: number, encoding: TokenEncoding) => MetricsTaskRunnerWithWarmup;
declare const defaultDeps: {
    calculateFileMetrics: (processedFiles: ProcessedFile[], targetFilePaths: string[], tokenCounterEncoding: TokenEncoding, progressCallback: RepomixProgressCallback, deps: {
        taskRunner: MetricsTaskRunner;
    }) => Promise<import("./workers/types.js").FileMetrics[]>;
    calculateOutputMetrics: (content: string, encoding: TokenEncoding, path: string | undefined, deps: {
        taskRunner: MetricsTaskRunner;
    }) => Promise<number>;
    calculateGitDiffMetrics: (config: RepomixConfigMerged, gitDiffResult: GitDiffResult | undefined, deps: {
        taskRunner: MetricsTaskRunner;
    }) => Promise<number>;
    calculateGitLogMetrics: (config: RepomixConfigMerged, gitLogResult: GitLogResult | undefined, deps: {
        taskRunner: MetricsTaskRunner;
    }) => Promise<{
        gitLogTokenCount: number;
    }>;
    taskRunner: MetricsTaskRunner | undefined;
};
export declare const extractOutputWrapper: (output: string, processedFilesInOutputOrder: ReadonlyArray<ProcessedFile>) => string | null;
export declare const canUseFastOutputTokenPath: (config: RepomixConfigMerged) => boolean;
export declare const calculateMetrics: (processedFiles: ProcessedFile[], outputPromise: Promise<string | string[]>, progressCallback: RepomixProgressCallback, config: RepomixConfigMerged, gitDiffResult: GitDiffResult | undefined, gitLogResult: GitLogResult | undefined, overrideDeps?: Partial<typeof defaultDeps>) => Promise<CalculateMetricsResult>;
export {};
