import { computeLOCMetrics as _computeLOCMetrics, computeMaintainabilityIndex as _computeMaintainabilityIndex } from '../ast-analysis/metrics.js';
import { COMPLEXITY_RULES, HALSTEAD_RULES } from '../ast-analysis/rules/index.js';
import { findFunctionNode as _findFunctionNode } from '../ast-analysis/shared.js';
import type { BetterSqlite3Database, HalsteadDerivedMetrics, LOCMetrics, TreeSitterNode } from '../types.js';
export { COMPLEXITY_RULES, HALSTEAD_RULES };
export declare function computeHalsteadMetrics(functionNode: TreeSitterNode, language: string): HalsteadDerivedMetrics | null;
export declare const computeLOCMetrics: typeof _computeLOCMetrics;
export declare const computeMaintainabilityIndex: typeof _computeMaintainabilityIndex;
export declare function computeFunctionComplexity(functionNode: TreeSitterNode, language: string): {
    cognitive: number;
    cyclomatic: number;
    maxNesting: number;
} | null;
interface AllMetricsResult {
    cognitive: number;
    cyclomatic: number;
    maxNesting: number;
    halstead: HalsteadDerivedMetrics | null;
    loc: LOCMetrics;
    mi: number;
}
export declare function computeAllMetrics(functionNode: TreeSitterNode, langId: string): AllMetricsResult | null;
export { _findFunctionNode as findFunctionNode };
interface FileSymbols {
    _tree?: {
        rootNode: TreeSitterNode;
    } | null;
    _langId?: string | null;
    definitions: Array<{
        name: string;
        kind: string;
        line: number;
        endLine?: number;
        complexity?: {
            cognitive: number;
            cyclomatic: number;
            maxNesting?: number;
            maintainabilityIndex?: number;
            halstead?: HalsteadDerivedMetrics | null;
            loc?: LOCMetrics | null;
        };
    }>;
}
export declare function buildComplexityMetrics(db: BetterSqlite3Database, fileSymbols: Map<string, FileSymbols>, rootDir: string, engineOpts?: {
    nativeDb?: {
        bulkInsertComplexity?(rows: Array<Record<string, unknown>>): number;
    };
    suspendJsDb?: () => void;
    resumeJsDb?: () => void;
}): Promise<void>;
export { complexityData, iterComplexity } from './complexity-query.js';
//# sourceMappingURL=complexity.d.ts.map