import type { RepomixConfigMerged } from '../config/configSchema.js';
import type { RepomixProgressCallback } from '../shared/types.js';
import type { ProcessedFile, RawFile } from './file/fileTypes.js';
import { GitDiffResult } from './git/gitDiffHandle.js';
import type { SuspiciousFileResult } from './security/securityCheck.js';
export interface PackResult {
    totalFiles: number;
    totalCharacters: number;
    totalTokens: number;
    fileCharCounts: Record<string, number>;
    fileTokenCounts: Record<string, number>;
    gitDiffTokenCount: number;
    suspiciousFilesResults: SuspiciousFileResult[];
    suspiciousGitDiffResults: SuspiciousFileResult[];
    processedFiles: ProcessedFile[];
    safeFilePaths: string[];
}
declare const defaultDeps: {
    searchFiles: (rootDir: string, config: RepomixConfigMerged, explicitFiles?: string[]) => Promise<import("./file/fileSearch.js").FileSearchResult>;
    collectFiles: (filePaths: string[], rootDir: string, config: RepomixConfigMerged, progressCallback?: RepomixProgressCallback, deps?: {
        initTaskRunner: <T, R>(numOfTasks: number, workerPath: string) => import("../shared/processConcurrency.js").TaskRunner<T, R>;
    }) => Promise<RawFile[]>;
    processFiles: (rawFiles: RawFile[], config: RepomixConfigMerged, progressCallback: RepomixProgressCallback, deps?: {
        initTaskRunner: typeof import("../shared/processConcurrency.js").initTaskRunner;
        getFileManipulator: (filePath: string) => import("./file/fileManipulate.js").FileManipulator | null;
    }) => Promise<ProcessedFile[]>;
    generateOutput: (rootDirs: string[], config: RepomixConfigMerged, processedFiles: ProcessedFile[], allFilePaths: string[], gitDiffResult?: GitDiffResult | undefined, deps?: {
        buildOutputGeneratorContext: (rootDirs: string[], config: RepomixConfigMerged, allFilePaths: string[], processedFiles: ProcessedFile[], gitDiffResult?: GitDiffResult | undefined) => Promise<import("./output/outputGeneratorTypes.js").OutputGeneratorContext>;
        generateHandlebarOutput: (config: RepomixConfigMerged, renderContext: import("./output/outputGeneratorTypes.js").RenderContext, processedFiles?: ProcessedFile[]) => Promise<string>;
        generateParsableXmlOutput: (renderContext: import("./output/outputGeneratorTypes.js").RenderContext) => Promise<string>;
        sortOutputFiles: (files: ProcessedFile[], config: RepomixConfigMerged, deps?: {
            getFileChangeCount: (directory: string, maxCommits?: number, deps?: {
                execGitLogFilenames: (directory: string, maxCommits?: number, deps?: {
                    execFileAsync: typeof import("child_process").execFile.__promisify__;
                }) => Promise<string[]>;
            }) => Promise<Record<string, number>>;
            isGitInstalled: (deps?: {
                execGitVersion: (deps?: {
                    execFileAsync: typeof import("child_process").execFile.__promisify__;
                }) => Promise<string>;
            }) => Promise<boolean>;
        }) => Promise<ProcessedFile[]>;
    }) => Promise<string>;
    validateFileSafety: (rawFiles: RawFile[], progressCallback: RepomixProgressCallback, config: RepomixConfigMerged, gitDiffResult?: GitDiffResult, deps?: {
        runSecurityCheck: (rawFiles: RawFile[], progressCallback?: RepomixProgressCallback, gitDiffResult?: GitDiffResult, deps?: {
            initTaskRunner: <T, R>(numOfTasks: number, workerPath: string) => import("../shared/processConcurrency.js").TaskRunner<T, R>;
        }) => Promise<SuspiciousFileResult[]>;
        filterOutUntrustedFiles: (rawFiles: RawFile[], suspiciousFilesResults: SuspiciousFileResult[]) => RawFile[];
    }) => Promise<{
        safeRawFiles: RawFile[];
        safeFilePaths: string[];
        suspiciousFilesResults: SuspiciousFileResult[];
        suspiciousGitDiffResults: SuspiciousFileResult[];
    }>;
    writeOutputToDisk: (output: string, config: RepomixConfigMerged) => Promise<undefined>;
    copyToClipboardIfEnabled: (output: string, progressCallback: RepomixProgressCallback, config: RepomixConfigMerged) => Promise<void>;
    calculateMetrics: (processedFiles: ProcessedFile[], output: string, progressCallback: RepomixProgressCallback, config: RepomixConfigMerged, gitDiffResult: GitDiffResult | undefined, deps?: {
        calculateAllFileMetrics: (processedFiles: ProcessedFile[], tokenCounterEncoding: import("tiktoken").TiktokenEncoding, progressCallback: RepomixProgressCallback, deps?: {
            initTaskRunner: <T, R>(numOfTasks: number, workerPath: string) => import("../shared/processConcurrency.js").TaskRunner<T, R>;
        }) => Promise<import("./metrics/workers/types.js").FileMetrics[]>;
        calculateSelectiveFileMetrics: (processedFiles: ProcessedFile[], targetFilePaths: string[], tokenCounterEncoding: import("tiktoken").TiktokenEncoding, progressCallback: RepomixProgressCallback, deps?: {
            initTaskRunner: <T, R>(numOfTasks: number, workerPath: string) => import("../shared/processConcurrency.js").TaskRunner<T, R>;
        }) => Promise<import("./metrics/workers/types.js").FileMetrics[]>;
        calculateOutputMetrics: (content: string, encoding: import("tiktoken").TiktokenEncoding, path?: string, deps?: {
            initTaskRunner: <T, R>(numOfTasks: number, workerPath: string) => import("../shared/processConcurrency.js").TaskRunner<T, R>;
        }) => Promise<number>;
        calculateGitDiffMetrics: (config: RepomixConfigMerged, gitDiffResult: GitDiffResult | undefined, deps?: {
            initTaskRunner: <T, R>(numOfTasks: number, workerPath: string) => import("../shared/processConcurrency.js").TaskRunner<T, R>;
        }) => Promise<number>;
    }) => Promise<import("./metrics/calculateMetrics.js").CalculateMetricsResult>;
    sortPaths: (filePaths: string[]) => string[];
    getGitDiffs: (rootDirs: string[], config: RepomixConfigMerged, deps?: {
        getWorkTreeDiff: (directory: string, deps?: {
            execGitDiff: (directory: string, options?: string[], deps?: {
                execFileAsync: typeof import("child_process").execFile.__promisify__;
            }) => Promise<string>;
            isGitRepository: (directory: string, deps?: {
                execGitRevParse: (directory: string, deps?: {
                    execFileAsync: typeof import("child_process").execFile.__promisify__;
                }) => Promise<string>;
            }) => Promise<boolean>;
        }) => Promise<string>;
        getStagedDiff: (directory: string, deps?: {
            execGitDiff: (directory: string, options?: string[], deps?: {
                execFileAsync: typeof import("child_process").execFile.__promisify__;
            }) => Promise<string>;
            isGitRepository: (directory: string, deps?: {
                execGitRevParse: (directory: string, deps?: {
                    execFileAsync: typeof import("child_process").execFile.__promisify__;
                }) => Promise<string>;
            }) => Promise<boolean>;
        }) => Promise<string>;
    }) => Promise<GitDiffResult | undefined>;
};
export declare const pack: (rootDirs: string[], config: RepomixConfigMerged, progressCallback?: RepomixProgressCallback, overrideDeps?: Partial<typeof defaultDeps>, explicitFiles?: string[]) => Promise<PackResult>;
export {};
//# sourceMappingURL=packager.d.ts.map