export type SqlValue = unknown;
export interface SqlQuery {
    readonly kind: 'sql';
    readonly chunks: readonly string[];
    readonly values: readonly SqlValue[];
}
export interface SqlIdentifier {
    readonly kind: 'identifier';
    readonly names: readonly string[];
}
export interface SqlTrustedRaw {
    readonly kind: 'rawTrusted';
    readonly text: string;
}
export type SqlFragment = SqlQuery | SqlIdentifier | SqlTrustedRaw;
export type SqlInput = SqlQuery | string;
export type Dialect = 'mysql' | 'postgres';
export interface RenderedSql {
    sql: string;
    bindings: unknown[];
}
type SqlTemplateValue = SqlValue | SqlFragment;
declare function sqlTag(strings: TemplateStringsArray, ...values: SqlTemplateValue[]): SqlQuery;
declare function join(values: readonly SqlTemplateValue[], separator?: SqlQuery): SqlQuery;
declare function identifier(...names: string[]): SqlIdentifier;
declare function rawTrusted(text: string): SqlTrustedRaw;
export declare const sql: typeof sqlTag & {
    join: typeof join;
    identifier: typeof identifier;
    rawTrusted: typeof rawTrusted;
};
export declare function createSqlQuery(sqlIn: string, bindings?: unknown[]): SqlQuery;
export declare function renderSql(input: SqlInput, dialect: Dialect): RenderedSql;
export declare function normalizeSqlBindingValue(value: unknown): unknown;
export declare function quoteIdentifier(name: string, dialect: Dialect): string;
export {};
//# sourceMappingURL=sql.d.ts.map