import { type LoadedConfig } from '@polka-codes/cli-shared';
import type { FullToolInfo, Logger } from '@polka-codes/core';
import { z } from 'zod';
import type { CliToolRegistry } from '../workflow-tools';
export type BaseWorkflowInput = {
    interactive: boolean;
    additionalTools: {
        search?: FullToolInfo;
        mcpTools?: FullToolInfo[];
    };
    config?: LoadedConfig;
};
export type FileChange = {
    path: string;
    status: string;
    insertions?: number;
    deletions?: number;
};
export declare function parseGitDiffNameStatus(diffOutput: string): FileChange[];
export declare function printChangedFiles(logger: Logger, changedFiles: FileChange[]): void;
export declare function parseGitDiffNumStat(output: string): Record<string, {
    insertions: number;
    deletions: number;
}>;
export declare function parseGitStatus(statusOutput: string): FileChange[];
export declare function getLocalChanges(): {
    stagedFiles: FileChange[];
    unstagedFiles: FileChange[];
    allFiles: FileChange[];
};
export declare function createFileStatusPrompt(changedFiles: FileChange[]): string;
export declare const specificReviewSchema: z.ZodObject<{
    file: z.ZodString;
    lines: z.ZodString;
    review: z.ZodString;
}, z.core.$strip>;
export declare const reviewOutputSchema: z.ZodObject<{
    overview: z.ZodString;
    specificReviews: z.ZodOptional<z.ZodArray<z.ZodObject<{
        file: z.ZodString;
        lines: z.ZodString;
        review: z.ZodString;
    }, z.core.$strip>>>;
}, z.core.$strip>;
export type ReviewResult = z.infer<typeof reviewOutputSchema>;
export declare function formatReviewForConsole(output: ReviewResult): string;
type ExecuteCommandFn = (input: CliToolRegistry['executeCommand']['input']) => Promise<CliToolRegistry['executeCommand']['output']>;
export declare const checkGhInstalled: (executeCommand: ExecuteCommandFn) => Promise<void>;
export declare const getDefaultBranch: (executeCommand: ExecuteCommandFn) => Promise<string | undefined>;
/**
 * Formats elapsed time in milliseconds to a human-readable string
 * @param ms - Time in milliseconds
 * @returns Formatted time string (e.g., "1.5s", "2m 30s", "1h 15m")
 */
export declare function formatElapsedTime(ms: number): string;
export declare function getDefaultContext(config: LoadedConfig | undefined, commandName?: string): Promise<{
    context: string;
    loadRules: Record<string, boolean> | undefined;
}>;
export {};
//# sourceMappingURL=workflow.utils.d.ts.map