import * as t from '@babel/types'; import type { GraphEdge, GraphNode } from './types.js'; import { type Detector } from './detectors/index.js'; import { type ProjectIndex, type ReduxHookKind } from './project-index.js'; export interface FileParseMetadata { anonymousDefaultSymbol?: GraphNode; localSymbols: Map; reduxStoreIds: string[]; reduxHookAliases: Map; } export interface FileResult { nodes: GraphNode[]; edges: GraphEdge[]; metadata: FileParseMetadata; } export interface ParseFileOptions { detectors?: Detector[]; project?: ProjectIndex; metadataOnly?: boolean; } /** * Parses source code into a Babel AST. Returns `null` and warns on syntax errors * so the caller can decide what to do (parseFile/parseFileFromAst skip those files). * Exposed so `parseProject` can cache ASTs across passes. */ export declare function parseSource(code: string, filePath: string): t.File | null; /** * Parses a single file and returns the nodes/edges it contributes to the graph. * Orchestration only — all detection logic lives in `./detectors/*`. */ export declare function parseFile(code: string, filePath: string, options?: ParseFileOptions): FileResult; /** * Same as `parseFile`, but accepts a pre-parsed AST. Used by `parseProject` to * avoid re-parsing the same file across passes. */ export declare function parseFileFromAst(ast: t.File, filePath: string, options?: ParseFileOptions): FileResult; //# sourceMappingURL=parse-file.d.ts.map