import type { BetterSqlite3Database, CodegraphConfig, PathAliases } from '../../../types.js';
export declare const BUILTIN_RECEIVERS: Set<string>;
/**
 * Check whether a source file passes the configured include/exclude globs.
 *
 * Patterns are matched against the path relative to the project root,
 * normalized to forward slashes (e.g. `src/foo/bar.ts`). When both lists
 * are set, a file must match at least one include and no exclude.
 */
export declare function passesIncludeExclude(relPath: string, includeRegexes: readonly RegExp[], excludeRegexes: readonly RegExp[]): boolean;
/**
 * Recursively collect all source files under `dir`.
 * When `directories` is a Set, also tracks which directories contain files.
 *
 * The first invocation establishes `dir` as the project root against which
 * `config.include` / `config.exclude` globs are matched.
 */
export declare function collectFiles(dir: string, files: string[], config: Partial<CodegraphConfig>, directories: Set<string>, _visited?: Set<string>, _rootDir?: string, _includeRegexes?: readonly RegExp[], _excludeRegexes?: readonly RegExp[]): {
    files: string[];
    directories: Set<string>;
};
export declare function collectFiles(dir: string, files?: string[], config?: Partial<CodegraphConfig>, directories?: null, _visited?: Set<string>, _rootDir?: string, _includeRegexes?: readonly RegExp[], _excludeRegexes?: readonly RegExp[]): string[];
/**
 * Load path aliases from tsconfig.json / jsconfig.json.
 */
export declare function loadPathAliases(rootDir: string): PathAliases;
/**
 * Compute MD5 hash of file contents for incremental builds.
 */
export declare function fileHash(content: string): string;
/**
 * Stat a file, returning { mtimeMs, size } or null on error.
 */
export declare function fileStat(filePath: string): {
    mtimeMs: number;
    size: number;
} | null;
export declare function readFileSafe(filePath: string, retries?: number): string;
/**
 * Purge all graph data for the specified files.
 */
export declare function purgeFilesFromGraph(db: BetterSqlite3Database, files: string[], options?: Record<string, unknown>): void;
/**
 * Batch-insert node rows via multi-value INSERT statements.
 * Each row: [name, kind, file, line, end_line, parent_id, qualified_name, scope, visibility]
 */
export declare function batchInsertNodes(db: BetterSqlite3Database, rows: unknown[][]): void;
/**
 * Batch-insert edge rows via multi-value INSERT statements.
 * Each row: [source_id, target_id, kind, confidence, dynamic]
 */
export declare function batchInsertEdges(db: BetterSqlite3Database, rows: unknown[][]): void;
//# sourceMappingURL=helpers.d.ts.map