export interface ToolInfo {
    name: string;
    available: boolean;
    version: string | null;
}
interface ExecResult {
    stdout: string;
    stderr: string;
    exitCode: number;
}
/**
 * Detect all supported external tools.
 */
export declare function detectTools(): Promise<ToolInfo[]>;
/**
 * Require a tool to be available, throwing if not found.
 */
export declare function requireTool(name: string): Promise<void>;
/**
 * Run Slither with JSON output.
 */
export declare function runSlither(dir: string, args: string[]): Promise<ExecResult>;
/**
 * Get Slither function-summary output with file-based caching.
 * access.ts and state.ts both run the identical `slither . --print function-summary --json -`
 * command. This cache ensures it only runs once per analysis session.
 */
export declare function getSlitherFunctionSummary(projectDir: string, outputDir: string): Promise<ExecResult>;
/**
 * Run Forge (Foundry).
 */
export declare function runForge(dir: string, args: string[]): Promise<ExecResult>;
export declare function flattenFile(projectDir: string, filePath: string): Promise<string | null>;
/**
 * Run solc.
 */
export declare function runSolc(dir: string, args: string[]): Promise<ExecResult>;
export {};
//# sourceMappingURL=external-tools.d.ts.map