export interface PerfettoStdlibSymbolAsset {
    version: number;
    generatedAt?: string;
    generatedFrom?: string;
    sourcePath?: string;
    modules: string[];
    tableToModule: Record<string, string>;
    builtins: string[];
}
export interface PerfettoStdlibSymbolIndex {
    tableToModule: Map<string, string>;
    builtins: Set<string>;
    source: 'asset' | 'source' | 'empty';
}
export declare function getPerfettoStdlibPath(): string;
export declare const STDLIB_PATH: string;
export declare const STDLIB_PRELUDE_DIR = "prelude";
export declare function getPerfettoStdlibSymbolAssetPath(): string;
/**
 * Walk the stdlib directory tree and invoke `callback` for each `.sql`
 * file. Returns the absolute file path plus the path relative to
 * the resolved stdlib path (with native separators) so callers can derive their own
 * naming scheme. Shared between the module-name scanner here and
 * `sqlIncludeInjector` which needs to read SQL contents.
 */
export declare function walkStdlibSqlFiles(callback: (absPath: string, relPath: string) => void, options?: {
    includePrelude?: boolean;
}): void;
/**
 * Scans the Perfetto stdlib directory and returns all available module names.
 *
 * @returns Array of module names (e.g., ["android.binder", "android.frames.timeline", ...])
 */
export declare function scanPerfettoStdlibModules(): string[];
/**
 * Scans the live Perfetto stdlib source tree and extracts the full symbol
 * inventory used by sqlIncludeInjector. Runtime builds should prefer the
 * packaged JSON asset via getPerfettoStdlibSymbolIndex().
 */
export declare function scanPerfettoStdlibSymbolIndex(): PerfettoStdlibSymbolIndex;
/**
 * Gets the list of Perfetto stdlib modules, caching the result.
 * Runtime builds prefer the packaged symbol asset; source scanning is a fallback.
 *
 * @returns Array of module names
 */
export declare function getPerfettoStdlibModules(): string[];
/**
 * Gets the stdlib symbol index used for raw SQL auto-INCLUDE injection.
 * Runtime builds prefer the packaged asset so npm/Docker do not need the
 * perfetto submodule. PERFETTO_STDLIB_PATH forces live source scanning.
 */
export declare function getPerfettoStdlibSymbolIndex(): PerfettoStdlibSymbolIndex;
/**
 * Clears the cached module list, forcing a rescan on next access.
 * Useful for testing or when the stdlib files may have changed.
 */
export declare function clearModuleCache(): void;
/**
 * Groups modules by their top-level namespace for logging purposes.
 *
 * @param modules - Array of module names
 * @returns Object mapping namespace to count
 */
export declare function groupModulesByNamespace(modules: string[]): Record<string, number>;
//# sourceMappingURL=perfettoStdlibScanner.d.ts.map