import type { AgentSqlToken } from "./lexer.js"; /** * Splits tokens into statements on `;`. A trailing `;` does not start a new * statement, so `SELECT 1;` is one statement. */ export declare function splitAgentSqlStatements(tokens: AgentSqlToken[]): AgentSqlToken[][]; /** The first keyword of a statement, ignoring leading parentheses. */ export declare function leadingAgentSqlKeyword(tokens: AgentSqlToken[]): string | null; export interface AgentSqlQualifiedReference { /** Every name before the last dot, as the database resolves them. */ qualifiers: string[]; name: string; /** Index of the first token of the reference. */ index: number; } /** * Every dotted name chain, such as `a.b` or `a.b.c`. The lexer has already * removed comments and whitespace, so spacing or comments around the dot do * not hide a chain. Column references (`alias.column`) are included; callers * decide which qualifiers matter. */ export declare function agentSqlQualifiedReferences(tokens: AgentSqlToken[]): AgentSqlQualifiedReference[]; /** Names immediately followed by `(`, i.e. function calls and type modifiers. */ export declare function agentSqlCalledNames(tokens: AgentSqlToken[]): string[]; /** * Type-conversion candidates in Postgres expressions. Calls are included * because `name(value)` can resolve as a cast instead of a function. */ export declare function agentSqlTypeNames(tokens: AgentSqlToken[]): Set; /** Every unquoted and quoted identifier value in the statement. */ export declare function agentSqlIdentifierNames(tokens: AgentSqlToken[]): Set;