import type { RepomixConfigMerged } from '../../config/configSchema.js';
import type { RepomixProgressCallback } from '../../shared/types.js';
import type { FilesByRoot } from '../file/fileTreeGenerate.js';
import type { ProcessedFile } from '../file/fileTypes.js';
import type { GitDiffResult } from '../git/gitDiffHandle.js';
import type { GitLogResult } from '../git/gitLogHandle.js';
export interface ProduceOutputResult {
    outputFiles?: string[];
    outputForMetrics: string | string[];
}
declare const defaultDeps: {
    generateOutput: (rootDirs: string[], config: RepomixConfigMerged, processedFiles: ProcessedFile[], allFilePaths: string[], gitDiffResult?: GitDiffResult | undefined, gitLogResult?: GitLogResult | undefined, filePathsByRoot?: FilesByRoot[], emptyDirPaths?: string[], deps?: {
        buildOutputGeneratorContext: (rootDirs: string[], config: RepomixConfigMerged, allFilePaths: string[], processedFiles: ProcessedFile[], gitDiffResult?: GitDiffResult | undefined, gitLogResult?: GitLogResult | undefined, filePathsByRoot?: FilesByRoot[], emptyDirPaths?: string[], deps?: {
            listDirectories: (rootDir: string, config: RepomixConfigMerged) => Promise<string[]>;
            listFiles: (rootDir: string, config: RepomixConfigMerged) => Promise<string[]>;
            searchFiles: (rootDir: string, config: RepomixConfigMerged, explicitFiles?: string[]) => Promise<import("../file/fileSearch.js").FileSearchResult>;
        }) => 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>;
        generateParsableJsonOutput: (renderContext: import("../output/outputGeneratorTypes.js").RenderContext) => Promise<string>;
        sortOutputFiles: (files: ProcessedFile[], config: RepomixConfigMerged, deps?: import("../output/outputSort.js").SortDeps) => Promise<ProcessedFile[]>;
    }) => Promise<string>;
    writeOutputToDisk: (output: string, config: RepomixConfigMerged) => Promise<undefined>;
    copyToClipboardIfEnabled: (output: string, progressCallback: RepomixProgressCallback, config: RepomixConfigMerged) => Promise<void>;
};
export declare const produceOutput: (rootDirs: string[], config: RepomixConfigMerged, processedFiles: ProcessedFile[], allFilePaths: string[], gitDiffResult: GitDiffResult | undefined, gitLogResult: GitLogResult | undefined, progressCallback: RepomixProgressCallback, filePathsByRoot?: FilesByRoot[], emptyDirPaths?: string[], overrideDeps?: Partial<typeof defaultDeps>) => Promise<ProduceOutputResult>;
export {};
