export interface CodeChange {
    hasChanges: boolean;
    functionChanges: FunctionChange[];
    componentChanges: ComponentChange[];
    selectorChanges: SelectorChange[];
    liveViewChanges: LiveViewChange[];
    templateChanges: TemplateChange[];
    testSuggestions: string[];
    overallImpact: 'low' | 'medium' | 'high';
}
export interface FunctionChange {
    functionName: string;
    changeType: 'signature_modified' | 'body_modified' | 'added' | 'removed';
    oldParams?: string[];
    newParams?: string[];
    addedParams?: string[];
    removedParams?: string[];
    testImpact: 'low' | 'medium' | 'high';
}
export interface ComponentChange {
    componentName: string;
    changeType: 'props_modified' | 'render_modified' | 'props_and_render_modified' | 'added' | 'removed';
    addedProps?: string[];
    removedProps?: string[];
    addedElements?: string[];
    removedElements?: string[];
    testImpact: 'low' | 'medium' | 'high';
}
export interface SelectorChange {
    changeType: 'class_names_modified' | 'dynamic_class_names' | 'id_modified' | 'data_attributes_added';
    oldClasses?: string[];
    newClasses?: string[];
    newPattern?: string;
    testImpact: 'low' | 'medium' | 'high';
    suggestedUpdate: string;
}
export interface LiveViewChange {
    moduleName: string;
    functionName: string;
    changeType: 'params_usage_added' | 'params_usage_removed' | 'event_handlers_modified' | 'assigns_modified';
    testImpact: 'low' | 'medium' | 'high';
    suggestedUpdate: string;
}
export interface TemplateChange {
    changeType: 'structure_modified' | 'content_modified' | 'structure_and_content_modified';
    addedElements?: string[];
    removedElements?: string[];
    changedClasses?: Record<string, string>;
    addedAttributes?: string[];
    removedAttributes?: string[];
    testImpact: 'low' | 'medium' | 'high';
}
export interface ChangeReport {
    summary: string;
    priority: 'low' | 'medium' | 'high';
    affectedTests: string[];
    requiredActions: string[];
    automatedFixes: string[];
}
export declare class ASTChangeDetector {
    /**
     * Detect changes between two code snippets
     */
    detectChanges(originalCode: string, modifiedCode: string, language: string): CodeChange;
    /**
     * Assess test impact of changes
     */
    assessTestImpact(originalCode: string, modifiedCode: string, language: string): {
        overallImpact: 'low' | 'medium' | 'high';
    };
    /**
     * Generate a comprehensive change report
     */
    generateChangeReport(originalCode: string, modifiedCode: string, language: string): ChangeReport;
    /**
     * Detect file type from extension
     */
    detectFileType(filename: string): string;
    private analyzeJavaScriptChanges;
    private analyzeFunctionChanges;
    private analyzeComponentChanges;
    private extractFunctionsRegex;
    private extractComponentsRegex;
    private extractElementsFromComponent;
    private analyzeElixirChanges;
    private analyzeTemplateChanges;
    private analyzeSelectors;
    private extractClasses;
    private extractElements;
    private extractAttributes;
    private assessOverallImpact;
    private generateTestSuggestions;
    private generateChangeSummary;
    private identifyAffectedTests;
    private generateRequiredActions;
    private generateAutomatedFixes;
}
//# sourceMappingURL=ast-change-detector.d.ts.map