import type { KyselyPlugin, QueryResult } from "kysely";
import { type IGenericSqlite, type Promisable, parseBigInt, buildQueryFn } from "kysely-generic-sqlite";
import { SqliteConnection } from "./SqliteConnection";
import type { ConnQuery, ConnQueryResults, Features } from "../Connection";
import type { MaybePromise } from "../../..";
export type { IGenericSqlite };
export type TStatement = {
    sql: string;
    parameters?: any[] | readonly any[];
};
export interface IGenericCustomSqlite<DB = unknown> extends IGenericSqlite<DB> {
    batch?: (stmts: TStatement[]) => Promisable<QueryResult<any>[]>;
}
export type GenericSqliteConnectionConfig<Database = unknown> = {
    name?: string;
    additionalPlugins?: KyselyPlugin[];
    excludeTables?: string[];
    onCreateConnection?: (db: Database) => MaybePromise<void>;
    supports?: Partial<Features>;
};
export declare class GenericSqliteConnection<DB = unknown> extends SqliteConnection<DB> {
    #private;
    db: DB;
    private executor;
    name: string;
    constructor(db: DB, executor: () => Promisable<IGenericCustomSqlite<DB>>, config?: GenericSqliteConnectionConfig);
    private getExecutor;
    executeQueries<O extends ConnQuery[]>(...qbs: O): Promise<ConnQueryResults<O>>;
}
export declare function genericSqlite<DB>(name: string, db: DB, executor: (utils: typeof genericSqliteUtils) => Promisable<IGenericCustomSqlite<DB>>, config?: GenericSqliteConnectionConfig): GenericSqliteConnection<DB>;
export declare const genericSqliteUtils: {
    parseBigInt: typeof parseBigInt;
    buildQueryFn: typeof buildQueryFn;
};
