import { JavaCommandExecutor } from "@salesforce/code-analyzer-engine-api/utils";
import { LogLevel } from "@salesforce/code-analyzer-engine-api";
export type PmdRuleInfo = {
    name: string;
    languageId: string;
    description: string;
    externalInfoUrl: string;
    ruleSets: string[];
    priority: string;
    ruleSetFile: string;
};
export type PmdRunInputData = {
    ruleSetInputFile: string;
    runDataPerLanguage: Record<string, LanguageSpecificPmdRunData>;
};
export type LanguageSpecificPmdRunData = {
    filesToScan: string[];
};
export type PmdResults = {
    violations: PmdViolation[];
    processingErrors: PmdProcessingError[];
};
export type PmdViolation = {
    rule: string;
    message: string;
    codeLocation: PmdCodeLocation;
};
export type PmdCodeLocation = {
    file: string;
    startLine: number;
    startCol: number;
    endLine: number;
    endCol: number;
};
export type PmdProcessingError = {
    file: string;
    message: string;
    detail: string;
};
export declare class PmdWrapperInvoker {
    private readonly javaCommandExecutor;
    private readonly userProvidedJavaClasspathEntries;
    private readonly emitLogEvent;
    constructor(javaCommandExecutor: JavaCommandExecutor, userProvidedJavaClasspathEntries: string[], emitLogEvent: (logLevel: LogLevel, message: string) => void);
    invokeDescribeCommand(customRulesets: string[], pmdRuleLanguageIds: string[], workingFolder: string, emitProgress: (percComplete: number) => void): Promise<PmdRuleInfo[]>;
    invokeRunCommand(pmdRuleInfoList: PmdRuleInfo[], runDataPerLanguage: Record<string, LanguageSpecificPmdRunData>, workingFolder: string, emitProgress: (percComplete: number) => void): Promise<PmdResults>;
}
