import { AnalyzerConfig, FileAnalysis, ProjectAnalysis } from './types';
/**
 * Main API Cost Analyzer class
 */
export declare class ApiCostAnalyzer {
    private config;
    private allPaths;
    private currentConditions;
    private sourceFile;
    constructor(config?: Partial<AnalyzerConfig>);
    /**
     * Load configuration from file with fallbacks
     */
    static loadConfigFromFile(configPath?: string): AnalyzerConfig;
    /**
     * Create analyzer with config loaded from file
     */
    static fromConfigFile(configPath?: string): ApiCostAnalyzer;
    /**
     * Set framework preset
     */
    setFramework(framework: string): void;
    /**
     * Update configuration
     */
    updateConfig(config: Partial<AnalyzerConfig>): void;
    /**
     * Analyze a single TypeScript/JavaScript file for API operation costs
     * @param filePath Path to the file to analyze
     * @returns File analysis results including methods, execution paths, and cost calculations
     */
    analyzeFile(filePath: string): FileAnalysis;
    /**
     * Analyze multiple files
     */
    analyzeFiles(filePaths: string[]): FileAnalysis[];
    /**
     * Analyze entire project
     */
    /**
     * Analyze an entire project directory
     * @param projectPath Path to the project directory
     * @param patterns Glob patterns to match files (default: TypeScript and JavaScript files)
     * @returns Project analysis results
     */
    analyzeProject(projectPath: string, patterns?: string[]): ProjectAnalysis;
    private generatePathDescription;
    private generateMethodSummary;
    private analyzeMethod;
    private analyzeNode;
    private analyzeAwaitStatement;
    private analyzeVariableStatement;
    private analyzeCallExpression;
    private extractOperationName;
    private isPartOfMethodChain;
    private extractOperationFromStatement;
    private extractParallelOperations;
    private generateRecommendations;
    private generateFileSummary;
    private generateProjectSummary;
    private visit;
    private isMethodDeclaration;
    /**
     * Check if a node is an arrow function property (common in modern NestJS services)
     * Handles both class property declarations and object literal assignments
     */
    private isArrowFunctionProperty;
    private getMethodName;
    private getClassName;
    private shouldAnalyzeMethod;
}
/**
 * Convenience function to quickly analyze a file with NestJS preset
 */
export declare function analyzeNestJSFile(filePath: string, customConfig?: Partial<AnalyzerConfig>): FileAnalysis;
/**
 * Convenience function to quickly analyze a NestJS project
 */
export declare function analyzeNestJSProject(projectPath: string, patterns?: string[], customConfig?: Partial<AnalyzerConfig>): ProjectAnalysis;
/**
 * Convenience function for Express projects
 */
export declare function analyzeExpressProject(projectPath: string, patterns?: string[], customConfig?: Partial<AnalyzerConfig>): ProjectAnalysis;
//# sourceMappingURL=analyzer.d.ts.map