import { IFrameworkAnalyzer } from "./framework-analyzer.interface.js";
import { IOutputGenerator, OutputGenerationOptions, GeneratedOutput } from "./output-generator.interface.js";
import { ProjectAnalysisOptions, AnalysisResult } from "./types.js";
export declare class FlowAnalyzer {
    private frameworkAnalyzers;
    private outputGenerators;
    /**
     * Register a framework analyzer
     */
    registerFrameworkAnalyzer(analyzer: IFrameworkAnalyzer): void;
    /**
     * Register an output generator
     */
    registerOutputGenerator(generator: IOutputGenerator): void;
    /**
     * Get all registered framework names
     */
    getAvailableFrameworks(): string[];
    /**
     * Get all registered output format names
     */
    getAvailableOutputFormats(): string[];
    /**
     * Recursively search for framework projects up to maxDepth levels deep
     */
    private findFrameworkProjectsRecursively;
    /**
     * Check if a directory should be skipped during recursive search
     */
    private shouldSkipDirectory;
    /**
     * Auto-detect the framework for a project, searching recursively up to 3 levels deep
     */
    detectFramework(projectPath: string): Promise<string | null>;
    /**
     * Get the detected project path for a framework
     */
    getFrameworkProjectPath(projectPath: string, frameworkName?: string): Promise<string>;
    /**
     * Analyze a project using the specified or auto-detected framework
     */
    analyze(options: ProjectAnalysisOptions): Promise<AnalysisResult>;
    /**
     * Generate outputs in the specified formats
     */
    generateOutputs(analysisResult: AnalysisResult, outputFormats: string[], baseOptions: Partial<OutputGenerationOptions>): Promise<GeneratedOutput[]>;
    /**
     * Full analysis and output generation workflow
     */
    analyzeAndGenerate(options: ProjectAnalysisOptions, outputOptions?: Partial<OutputGenerationOptions>): Promise<{
        analysis: AnalysisResult;
        outputs: GeneratedOutput[];
    }>;
}
