import * as ts from 'typescript';
import { ClassInfo } from './interface';
import { CheckOptions } from '../../common';
/**
 * Enhanced class information including abstractness and dependency data
 */
export interface EnhancedClassInfo extends ClassInfo {
    isAbstract: boolean;
    isInterface: boolean;
    abstractMethods: string[];
    dependencies: ClassDependencyInfo;
}
/**
 * Dependency information for a class/file
 */
export interface ClassDependencyInfo {
    efferentCoupling: number;
    afferentCoupling: number;
    outgoingDependencies: string[];
    incomingDependencies: string[];
}
/**
 * File-level analysis result for distance metrics
 */
export interface FileAnalysisResult {
    filePath: string;
    classes: EnhancedClassInfo[];
    interfaces: number;
    abstractClasses: number;
    concreteClasses: number;
    totalTypes: number;
    dependencies: ClassDependencyInfo;
    sourceFile?: ts.SourceFile;
}
/**
 * Extracts class information from TypeScript source files for metrics calculation
 */
export declare function extractClassInfo(configFileName?: string, projectPath?: string, options?: CheckOptions): ClassInfo[];
/**
 * Enhanced class information extraction with abstractness and dependency analysis
 */
export declare function extractEnhancedClassInfo(tsConfigFilePath?: string, projectPath?: string, options?: CheckOptions): Promise<FileAnalysisResult[]>;
