import { D as DBOptions, I as InitData, a as BunWorkerDialectConfig } from './type-lkXPtSaY.mjs';
export { B as BunSqliteDialectConfig } from './type-lkXPtSaY.mjs';
import { MessageHandleFn, GenericSqliteWorkerDialect } from 'kysely-generic-sqlite/worker';
import { IGenericSqlite, Promisable } from 'kysely-generic-sqlite';
import Database from 'bun:sqlite';

declare function createSqliteExecutor(db: Database, cache: boolean): IGenericSqlite<Database>;

type CreateDatabaseFn = (fileName: string, opt: DBOptions) => Promisable<Database>;
declare const defaultCreateDatabaseFn: CreateDatabaseFn;
/**
 * Handle worker message, support custom callback on initialization.
 * Built-in: {@link defaultCreateDatabaseFn}
 * @example
 * // worker.ts
 * import { createOnMessageCallback } from 'kysely-bun-worker'
 *
 * createOnMessageCallback(
 *   async (db) => {
 *     db.loadExtension(...)
 *   }
 * )
 */
declare function createOnMessageCallback(create: CreateDatabaseFn, message?: MessageHandleFn<Database>): void;

declare class BunWorkerDialect extends GenericSqliteWorkerDialect<globalThis.Worker, InitData> {
    /**
     * dialect for `bun:sqlite`, run sql in worker
     */
    constructor(config?: BunWorkerDialectConfig);
}

export { BunWorkerDialect, BunWorkerDialectConfig, type CreateDatabaseFn, DBOptions, InitData, createOnMessageCallback, createSqliteExecutor, defaultCreateDatabaseFn };
