/**
 * Codebase Explorer Service
 *
 * Provides comprehensive codebase exploration capabilities including:
 * - Directory structure visualization
 * - File statistics and metrics
 * - Language detection and distribution
 * - Project type detection
 * - Smart file recommendations
 *
 * Based on hurry-mode's codebase exploration features.
 */
/**
 * Supported languages and their extensions
 */
export declare const LANGUAGE_EXTENSIONS: Record<string, string[]>;
/**
 * File type categories
 */
export type FileCategory = "source" | "test" | "config" | "documentation" | "asset" | "build" | "other";
/**
 * File information
 */
export interface FileInfo {
    path: string;
    name: string;
    extension: string;
    language: string;
    category: FileCategory;
    size: number;
    lines: number;
    modifiedAt: Date;
    isHidden: boolean;
}
/**
 * Directory information
 */
export interface DirectoryInfo {
    path: string;
    name: string;
    fileCount: number;
    directoryCount: number;
    totalSize: number;
    depth: number;
    isHidden: boolean;
}
/**
 * Project type
 */
export type ProjectType = "nodejs" | "python" | "go" | "rust" | "java" | "dotnet" | "ruby" | "php" | "unknown";
/**
 * Project information
 */
export interface ProjectInfo {
    type: ProjectType;
    name: string;
    version?: string;
    description?: string;
    entryPoints: string[];
    configFiles: string[];
    dependencies: number;
    devDependencies: number;
}
/**
 * Codebase statistics
 */
export interface CodebaseStats {
    totalFiles: number;
    totalDirectories: number;
    totalSize: number;
    totalLines: number;
    filesByLanguage: Map<string, number>;
    linesByLanguage: Map<string, number>;
    filesByCategory: Map<FileCategory, number>;
    largestFiles: FileInfo[];
    recentlyModified: FileInfo[];
    deepestPaths: string[];
}
/**
 * Exploration options
 */
export interface ExplorationOptions {
    maxDepth?: number;
    includeHidden?: boolean;
    excludePatterns?: string[];
    followSymlinks?: boolean;
    countLines?: boolean;
}
/**
 * Codebase Explorer Service
 */
export declare class CodebaseExplorer {
    private options;
    private rootPath;
    private files;
    private directories;
    private projectInfo;
    constructor(rootPath: string, options?: Partial<ExplorationOptions>);
    /**
     * Explore the codebase
     */
    explore(): Promise<CodebaseStats>;
    /**
     * Scan a directory recursively
     */
    private scanDirectory;
    /**
     * Analyze a single file
     */
    private analyzeFile;
    /**
     * Detect language from extension
     */
    private detectLanguage;
    /**
     * Categorize a file
     */
    private categorizeFile;
    /**
     * Check if a file is a text file
     */
    private isTextFile;
    /**
     * Check if a path should be excluded
     */
    private shouldExclude;
    /**
     * Helper to check if a file exists asynchronously
     */
    private fileExists;
    /**
     * Detect project type and information
     */
    private detectProject;
    /**
     * Calculate codebase statistics
     */
    private calculateStats;
    /**
     * Get all files
     */
    getFiles(): FileInfo[];
    /**
     * Get all directories
     */
    getDirectories(): DirectoryInfo[];
    /**
     * Get project info
     */
    getProjectInfo(): ProjectInfo | null;
    /**
     * Find files matching a pattern
     */
    findFiles(pattern: string): FileInfo[];
    /**
     * Find files by language
     */
    findByLanguage(language: string): FileInfo[];
    /**
     * Find files by category
     */
    findByCategory(category: FileCategory): FileInfo[];
    /**
     * Get important files (entry points, configs, main sources)
     */
    getImportantFiles(): FileInfo[];
    /**
     * Generate a tree view of the codebase
     */
    generateTree(maxDepth?: number): Promise<string>;
    /**
     * Generate a summary report
     */
    generateReport(): string;
    /**
     * Format file size
     */
    private formatSize;
}
/**
 * Create a codebase explorer instance
 */
export declare function createCodebaseExplorer(rootPath: string, options?: Partial<ExplorationOptions>): CodebaseExplorer;
/**
 * Quick explore function
 */
export declare function exploreCodebase(rootPath: string, options?: Partial<ExplorationOptions>): Promise<{
    stats: CodebaseStats;
    project: ProjectInfo | null;
    tree: string;
    report: string;
}>;
