import { type DatabaseDriver } from "./schema/driver.ts"; interface SqlDialect { readonly driver: DatabaseDriver; placeholder(index: number): string; quoteIdentifier(identifier: string): string; nowExpression(): string; /** Render a Date as a literal this engine accepts for a timestamp column. */ timestampValue(value: Date): string; returningClause(columns: string): string; ilikeOperator(): "ILIKE" | "LIKE"; nullsLastSuffix(): string; castToText(expression: string): string; /** Conflict handling appended to an INSERT. Empty updates mean "do nothing". */ upsertSuffix(conflictColumns: readonly string[], updateColumns: readonly string[]): string; } declare function dialectFor(driver: DatabaseDriver): SqlDialect; declare function currentSqlDialect(): SqlDialect; declare function useSqlDialect(driver: DatabaseDriver): SqlDialect; /** Format a timestamp parameter for whichever engine is active. */ declare function sqlTimestamp(value?: Date): string; declare function resetSqlDialect(): void; declare function runWithSqlDialect(driver: DatabaseDriver, callback: () => T | Promise): T | Promise; export type { SqlDialect }; export { currentSqlDialect, dialectFor, resetSqlDialect, runWithSqlDialect, sqlTimestamp, useSqlDialect, };