import { Database, type Changes, type DatabaseOptions, type SQLQueryBindings, type Statement } from "bun:sqlite";
import { DbxQuery, DbxSelectQuery } from "./query.js";
export type QueryLogFunc = (sql: string, durationMs?: number) => void;
export declare class DbxDatabase extends Database {
    QueryLogFunc?: QueryLogFunc;
    constructor(filename?: string, options?: number | DatabaseOptions);
    run<ParamsType extends SQLQueryBindings[]>(sql: string, ...bindings: ParamsType[]): Changes;
    exec<ParamsType extends SQLQueryBindings[]>(sql: string, ...bindings: ParamsType[]): Changes;
    query<ReturnType, ParamsType extends SQLQueryBindings | SQLQueryBindings[]>(sql: string): Statement<ReturnType, ParamsType extends any[] ? ParamsType : [ParamsType]>;
    prepare<ReturnType, ParamsType extends SQLQueryBindings | SQLQueryBindings[]>(sql: string, params?: ParamsType): Statement<ReturnType, ParamsType extends any[] ? ParamsType : [ParamsType]>;
    newQuery(sql: string, ...params: SQLQueryBindings[]): DbxQuery;
    select(...fields: string[]): DbxSelectQuery;
}
