import { SCATProviderType, SCATProvider } from './index.js';
/**
 * Factory class for creating Static Code Analysis Tool (SCAT) provider instances
 *
 * Provides a centralized way to create appropriate SCAT provider implementations
 * based on the specified provider type. Supports SFCodeAnalyzer and PMDCodeAnalyzer.
 *
 * @example
 * ```typescript
 * const provider = SCATProviderFactory.getInstance(
 *   SCATProviderType.SFCodeAnalyzer,
 *   '/path/to/scan',
 *   '/path/to/config'
 * );
 * const results = await provider.run();
 * ```
 */
export default class SCATProviderFactory {
    /**
     * Gets a SCAT provider instance
     *
     * @param type - The type of SCAT provider to create
     * @param scanDirectory - The directory to scan for code analysis
     * @param configFile - Optional configuration file path for the analyzer
     * @param fileList - Optional array of specific files to analyze (for PMD)
     * @returns An instance of the specified SCAT provider
     * @throws Error when the provider type is unsupported or required parameters are missing
     * @example
     * ```typescript
     * const provider = SCATProviderFactory.getInstance(
     *   SCATProviderType.PMDCodeAnalyzer,
     *   '/src',
     *   'pmd-ruleset.xml',
     *   ['Class1.cls', 'Class2.cls']
     * );
     * const results = await provider.run();
     * ```
     */
    static getInstance(type: SCATProviderType, scanDirectory: string, configFile?: string, fileList?: string[]): SCATProvider;
}
