import { a as IGenericSqliteExecutor, I as IGenericSqlite } from './type-dQxYJ4xm.js';
import { Dialect, Driver, QueryCompiler, DialectAdapter, Kysely, DatabaseIntrospector, DatabaseConnection } from 'kysely';

declare class BaseSqliteDialect implements Dialect {
    /**
     * Base class that implements {@link Dialect}
     * @param create function that create {@link Driver}
     */
    constructor(create: () => Driver);
    createDriver: () => Driver;
    createQueryCompiler(): QueryCompiler;
    createAdapter(): DialectAdapter;
    createIntrospector(db: Kysely<any>): DatabaseIntrospector;
}
declare abstract class BaseSqliteDriver implements Driver {
    private mutex;
    conn?: DatabaseConnection;
    savepoint: ((connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']) => Promise<void>) | undefined;
    releaseSavepoint: ((connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']) => Promise<void>) | undefined;
    rollbackToSavepoint: ((connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']) => Promise<void>) | undefined;
    init: () => Promise<void>;
    /**
     * Base abstract class that implements {@link Driver}
     *
     * You **MUST** assign `this.conn` in `init` and implement `destroy` method
     */
    constructor(init: () => Promise<void>);
    acquireConnection(): Promise<DatabaseConnection>;
    beginTransaction(connection: DatabaseConnection): Promise<void>;
    commitTransaction(connection: DatabaseConnection): Promise<void>;
    rollbackTransaction(connection: DatabaseConnection): Promise<void>;
    releaseConnection(): Promise<void>;
    abstract destroy(): Promise<void>;
}
/**
 * Wrapper for {@link IGenericSqlite}'s `query` function
 *
 * Do not support `returning` in `INSERT`, `UPDATE`, `DELETE`
 * @param exec {@link IGenericSqliteExecutor}
 */
declare function buildQueryFnAlt(exec: IGenericSqliteExecutor): IGenericSqlite['query'];
/**
 * Wrapper for {@link IGenericSqlite}'s `query` function
 *
 * Support `returning`, get `insertId` and `numAffectedRows` by calling `select 1`
 * @param exec {@link IGenericSqliteExecutor} `exec.run` will never call real sqls
 */
declare function buildQueryFn(exec: IGenericSqliteExecutor): IGenericSqlite['query'];
declare function parseBigInt(num: number | bigint | null | undefined): bigint | undefined;

export { BaseSqliteDialect as B, BaseSqliteDriver as a, buildQueryFnAlt as b, buildQueryFn as c, parseBigInt as p };
