import type { BetterSqlite3Database } from '../types.js';
interface FileSymbolData {
    definitions: {
        name: string;
        kind: string;
        line: number;
    }[];
    imports: unknown[];
    exports: unknown[];
    calls?: unknown[];
}
export declare function buildStructure(db: BetterSqlite3Database, fileSymbols: Map<string, FileSymbolData>, _rootDir: string, lineCountMap: Map<string, number>, directories: Set<string>, changedFiles?: string[] | null): void;
export { FRAMEWORK_ENTRY_PREFIXES } from '../graph/classifiers/roles.js';
interface RoleSummary {
    entry: number;
    core: number;
    utility: number;
    adapter: number;
    dead: number;
    'dead-leaf': number;
    'dead-entry': number;
    'dead-ffi': number;
    'dead-unresolved': number;
    'test-only': number;
    leaf: number;
    [key: string]: number;
}
/**
 * Classify every node in the graph into a role (core, entry, utility, etc.).
 *
 * When `changedFiles` is provided, only nodes from those files (and their
 * edge neighbours) are reclassified. The returned `RoleSummary` in that case
 * reflects **only the affected subset**, not the entire graph. Callers that
 * need graph-wide totals should perform a full classification (omit
 * `changedFiles`) or query the DB directly.
 */
export declare function classifyNodeRoles(db: BetterSqlite3Database, changedFiles?: string[] | null): RoleSummary;
export { hotspotsData, moduleBoundariesData, structureData } from './structure-query.js';
//# sourceMappingURL=structure.d.ts.map