import { LogLevel, TelemetryData } from '@salesforce/code-analyzer-engine-api';
import { JavaCommandExecutor } from '@salesforce/code-analyzer-engine-api/utils';
import { Clock } from './utils';
export type SfgeRuleInfo = {
    name: string;
    description: string;
    category: string;
    severity: number;
    url: string;
    isPilot: boolean;
};
export type SfgeRunResult = {
    ruleName: string;
    severity: number;
    message: string;
    sourceFileName: string;
    sourceLineNumber: number;
    sourceColumnNumber: number;
    sourceVertexName: string;
    sinkFileName?: string;
    sinkLineNumber?: number;
    sinkColumnNumber?: number;
};
export type SfgeRunOptions = {
    logFolder: string;
    disableLimitReachedViolations: boolean;
    threadCount: number;
    threadTimeout: number;
    heapSizeArg?: string;
};
export declare class RuntimeSfgeWrapper {
    private readonly javaCommandExecutor;
    private readonly logFileName;
    private temporaryWorkingDir?;
    private readonly emitLogEvent;
    private readonly emitTelemetryEvent;
    constructor(javaCommandExecutor: JavaCommandExecutor, clock: Clock, emitLogEvent: (logLevel: LogLevel, message: string) => void, emitTelemetryEvent: (eventName: string, data: TelemetryData) => void);
    invokeDescribeCommand(workingFolder: string, emitProgress: (percComplete: number) => void, logFolder: string): Promise<SfgeRuleInfo[]>;
    invokeRunCommand(selectedRuleInfos: SfgeRuleInfo[], targetPaths: string[], projectFilePaths: string[], sfgeRunOptions: SfgeRunOptions, workingFolder: string, emitProgress: (percComplete: number) => void): Promise<SfgeRunResult[]>;
    private createSfgeInputFile;
}
