import { DatabaseConnection, Dialect, Driver, QueryCompiler, DialectAdapter, Kysely, DatabaseIntrospector } from 'kysely';
import { Database } from 'bun:sqlite';

/**
 * Config for the SQLite dialect.
 */
interface BunSqliteDialectConfig {
    /**
     * An sqlite Database instance or a function that returns one.
     */
    database: Database;
    /**
     * Called once when the first query is executed.
     */
    onCreateConnection?: (connection: DatabaseConnection) => Promise<void>;
}

declare class BunSqliteDialect implements Dialect {
    #private;
    constructor(config: BunSqliteDialectConfig);
    createDriver(): Driver;
    createQueryCompiler(): QueryCompiler;
    createAdapter(): DialectAdapter;
    createIntrospector(db: Kysely<any>): DatabaseIntrospector;
}

export { BunSqliteDialect };
