import type { SemanticProgramIndex } from './types.js'; export type BuildSpiOptions = { root: string; madarVersion: string; extractorVersion?: string; /** Restrict source discovery to these absolute paths. */ includedFiles?: ReadonlySet; now?: () => Date; }; export type BuildSpiFileLayerOptions = BuildSpiOptions; /** The source extensions the SPI builder can parse and project. */ export declare const SPI_SOURCE_EXTENSIONS: ReadonlySet; export declare function isSpiSupportedSourceFile(filePath: string): boolean; /** * Resolve the explicit source set passed by generation. The detector already * applies the workspace's safe symlink policy; this preserves those logical * paths for SPI instead of re-walking the tree and silently dropping them. */ export declare function collectExplicitSpiFiles(rootPath: string, includedFiles: ReadonlySet): string[]; export declare function buildSpi(opts: BuildSpiOptions): SemanticProgramIndex; export declare const buildSpiFileLayer: typeof buildSpi; export declare function findNearestProjectConfigPath(startPath: string): string | null;