import { P as Promisable } from './type-dQxYJ4xm.cjs';
import { b as InitFn, M as MessageHandleFn, a as IGenericSqliteWorkerExecutor, H as HandleMessageFn } from './types-yz6kgqQe.cjs';
import 'kysely';

declare function createWebOnMessageCallback<T extends Record<string, unknown>, DB = unknown>(init: InitFn<T, DB>, message?: MessageHandleFn<DB>): void;
interface IWebWorkerDialectConfig<T extends Record<string, unknown>> extends Pick<IGenericSqliteWorkerExecutor<globalThis.Worker, T>, 'data' | 'mitt'> {
    worker: globalThis.Worker | (() => Promisable<globalThis.Worker>);
}
/**
 * Util for handle web worker message in main thread
 */
declare const handleWebWorker: HandleMessageFn<globalThis.Worker>;
/**
 * Create worker executor for web
 * @param config {@link IWebWorkerDialectConfig}
 * @example
 * You can also manually create executor for web worker:
 * ```ts
 * import { GenericSqliteWorkerDialect } from 'kysely-generic-sqlite/worker'
 * import { handleWebWorker } from 'kysely-generic-sqlite/worker-helper-web'
 * import { mitt } from 'zen-mitt'
 *
 * const worker = new Worker(new URL('./worker.js', import.meta.url), { type: 'module' })
 * const dialect = new GenericSqliteWorkerDialect(
 *   () => {
 *     worker,
 *     mitt: mitt(),
 *     handle: handleWebWorker,
 *   }),
 * )
 * ```
 */
declare function createWebWorkerExecutor<T extends Record<string, unknown>>(config: IWebWorkerDialectConfig<T>): () => Promise<IGenericSqliteWorkerExecutor<globalThis.Worker, T>>;

export { type IWebWorkerDialectConfig, createWebOnMessageCallback, createWebWorkerExecutor, handleWebWorker };
