/** "table" = a table/view identifier — only BigQuery treats these differently from everything * else (columns, aliases, CTE names, struct/field names, …), which is "other". */ export type IdentKind = "table" | "other"; /** "ascii-lower" folds [A-Z] only, passing every other character through, for dialects whose * engines compare identifiers ASCII-case-insensitively (sqlite, postgres, duckdb, redshift): * there `Ä` and `ä` are DISTINCT identifiers, and a Unicode-wide fold would conflate them (#22). */ type CaseFold = "lower" | "upper" | "preserve" | "ascii-lower"; export interface FoldRule { /** [open, close] delimiter pairs this dialect recognizes, tried in order. */ delimiters: readonly (readonly [string, string])[]; /** Case fold applied to an unquoted identifier. */ unquoted: "lower" | "upper" | "ascii-lower"; /** Case fold applied to a quoted (delimited) identifier. */ quoted: CaseFold; /** BigQuery only: table identifiers preserve case whether or not they're backtick-quoted — * backticks there are an escaping mechanism, not a case-quoting one. When set, this * overrides both `unquoted`/`quoted` for kind:"table". */ tableCase?: "preserve"; /** How an escaped delimiter is written inside a quoted identifier's body. * "double" (default) — the close delimiter is escaped by doubling it (`""`→`"`, `` `` ``→`` ` ``, * `]]`→`]`). * "backslash" — BigQuery only (see its rule comment): quoted identifiers use string-literal escape * sequences, not doubling. */ escapeStyle?: "double" | "backslash"; } /** Fold an identifier to its identity key under an explicit rule (the engine each dialect folder binds). */ export declare function foldWith(rule: FoldRule, raw: string, kind?: IdentKind): string; /** Presentation twin of foldWith: strip delimiters, no case change. */ export declare function displayWith(rule: FoldRule, raw: string): string; export {};