export interface InjectionResult {
    /** Final SQL with any required INCLUDE statements prepended (alphabetical, deterministic). */
    sql: string;
    /** Modules that were auto-injected for this query (empty if no injection happened). */
    injected: string[];
}
/**
 * Returns `sql` unchanged if no stdlib references need INCLUDE, or
 * returns a new SQL string with the required INCLUDE statements prepended
 * in alphabetical order (deterministic for caching/logging).
 *
 * trace_processor treats repeated `INCLUDE PERFETTO MODULE x;` as a
 * no-op, so we are free to inject even when the module might already be
 * preloaded by the Tier-0 fire-and-forget loader (workingTraceProcessor).
 * This avoids a race where the first raw SQL after upload arrives before
 * Tier-0 finishes loading.
 */
export declare function injectStdlibIncludes(sql: string): InjectionResult;
export declare function _resetCacheForTesting(): void;
export declare function _getSymbolIndexForTesting(): {
    tableToModule: ReadonlyMap<string, string>;
    builtins: ReadonlySet<string>;
};
//# sourceMappingURL=sqlIncludeInjector.d.ts.map