import { SqlResult } from '../models/SqlResult'; import { SqlEngine, DriverConfig } from '../models/SqlEngine'; import { DriverTransaction } from '../driver/SqlDriver'; import { Dialect } from '../builder/Dialect'; import { SqlFragment } from '../builder/SqlTag'; import { ResultSet } from '../result/ResultSet'; /** Transaction handle: driver tx plus the client's dialect/engine, so QueryBuilder.run(tx) works. */ export type SqlTransaction = DriverTransaction & { dialect: Dialect; engine: SqlEngine; }; export interface SqlClientConfig extends DriverConfig { /** Explicit engine; if omitted, inferred from `connectionString`'s scheme. */ engine?: SqlEngine; /** Override the dialect (rarely needed). */ dialect?: Dialect; } /** Engine-agnostic SQL client. Resolves the engine via the Abstract Factory and delegates. */ export declare class SqlClient { readonly engine: SqlEngine; readonly dialect: Dialect; private driver; constructor(config: SqlClientConfig); query>(fragment: SqlFragment): Promise>; query>(sql: string, params?: unknown[]): Promise>; execute(fragment: SqlFragment): Promise; execute(sql: string, params?: unknown[]): Promise; /** query() + rows(): fetch straight into a ResultSet. */ fetch>(sql: string, params?: unknown[]): Promise>; /** Split a multi-statement script with this engine's rules and execute each statement in order. */ runScript(sqlText: string): Promise; /** Cheap connectivity check; throws if the engine is unreachable. */ ping(): Promise; transaction(fn: (tx: SqlTransaction) => Promise): Promise; end(): Promise; }