import { type ImportRecord } from '../graph/import-graph.js';
import type { SymbolRecord } from '../types.js';
export interface ParseOptions {
    workspaceRoot: string;
    tsConfigFilePath?: string;
    filePatterns?: string[];
    includeNodeModules?: boolean;
    ignore?: string[];
    /**
     * Explicit list of file paths (absolute or workspace-relative) to scan.
     * When set, overrides `filePatterns`. Used by `--diff` mode to restrict the
     * scan to files changed in a git range.
     */
    files?: string[];
}
export interface ParseResult {
    symbols: SymbolRecord[];
    imports: ImportRecord[];
    /** All workspace-relative file paths that were parsed (post node_modules/dist filtering). */
    files: string[];
}
export declare class TypeScriptParser {
    /** Backwards-compatible shortcut: returns only the symbols array. */
    parseWorkspace(opts: ParseOptions): Promise<SymbolRecord[]>;
    /** Full parse — symbols + imports + file list, built in a single ts-morph project. */
    parseWorkspaceFull(opts: ParseOptions): Promise<ParseResult>;
    private isDefault;
    private fromInterface;
    private fromTypeAlias;
    /**
     * Extract a class as a structural symbol so duplicate-type clustering can
     * match it against interfaces, type aliases, and other classes that share
     * the same shape. Class methods become pseudo-fields (`()methodName`) using
     * the same convention as interfaces; instance properties become
     * regular fields; static members are skipped (different surface area).
     */
    private fromClass;
    private fieldFromClassProperty;
    private fieldFromClassMethod;
    /**
     * Capture `const Foo = () => ...` / `const Foo = function() {...}` as a
     * function symbol. The variable name becomes the symbol name; the arrow
     * or function-expression body provides params + body. React functional
     * components, mapped utility functions, and event-handler factories all
     * land here.
     *
     * Returns null when the initializer is not a callable shape.
     */
    private fromVariableFunction;
    private fromFunction;
    private fieldFromProperty;
    private fieldFromMethod;
    private fieldFromIndexSignature;
    private fieldFromCallSignature;
    private fieldFromConstructSignature;
}
//# sourceMappingURL=typescript-parser.d.ts.map