import type { SQLQueryBindings } from "bun:sqlite";
import type { SqlExpr } from "../search/types.js";
export type Expression = SqlExpr & {
    build?: (db: unknown, params: Record<string, unknown>) => string;
};
export type Params = Record<string, unknown>;
export declare function HashExp(values: Record<string, unknown>): SqlExpr;
export declare function NewExp(sql: string, params?: Params): SqlExpr;
export type LikeExpr = SqlExpr & {
    Escape: (...chars: string[]) => LikeExpr;
    escape: (...chars: string[]) => LikeExpr;
    Match: (left: boolean, right: boolean) => LikeExpr;
    like?: string;
};
export declare function Like(field: string, ...values: string[]): LikeExpr;
export declare function Not(expr: SqlExpr): SqlExpr;
export declare function And(...exprs: SqlExpr[]): SqlExpr;
export declare function Or(...exprs: SqlExpr[]): SqlExpr;
export declare function In(field: string, ...values: SQLQueryBindings[]): SqlExpr;
export declare function NotIn(field: string, ...values: SQLQueryBindings[]): SqlExpr;
export declare function OrLike(field: string, ...values: string[]): LikeExpr;
export declare function NotLike(field: string, ...values: string[]): LikeExpr;
export declare function OrNotLike(field: string, ...values: string[]): LikeExpr;
export declare function Exists(subquery: SqlExpr | string): SqlExpr;
export declare function NotExists(subquery: SqlExpr | string): SqlExpr;
export declare function Between(field: string, from: SQLQueryBindings, to: SQLQueryBindings): SqlExpr;
export declare function NotBetween(field: string, from: SQLQueryBindings, to: SQLQueryBindings): SqlExpr;
