import { Kysely } from "kysely";
import type { Compilable, DatabaseIntrospector, Dialect, DialectAdapter, Driver, QueryCompiler } from "kysely";
export interface D1Result<T = Record<string, unknown>> {
    success: boolean;
    error?: string;
    results?: T[];
    meta?: {
        changes?: number;
        last_row_id?: number;
        rows_written?: number;
    };
}
export interface D1PreparedStatement {
    bind(...values: unknown[]): D1PreparedStatement;
    all<T = Record<string, unknown>>(): Promise<D1Result<T>>;
    run<T = Record<string, unknown>>(): Promise<D1Result<T>>;
}
export interface D1Database {
    prepare(query: string): D1PreparedStatement;
    batch<T = Record<string, unknown>>(statements: D1PreparedStatement[]): Promise<D1Result<T>[]>;
}
export type D1BatchQuery = Compilable<any>;
export type D1Kysely<TDb> = Kysely<TDb> & {
    /** Execute compiled Kysely queries as one atomic Cloudflare D1 batch. */
    batch(queries: readonly D1BatchQuery[]): Promise<D1Result[]>;
};
export declare class D1Dialect implements Dialect {
    #private;
    constructor(database: D1Database);
    createDriver(): Driver;
    createQueryCompiler(): QueryCompiler;
    createAdapter(): DialectAdapter;
    createIntrospector(db: Kysely<any>): DatabaseIntrospector;
}
export declare function createD1Db<TDb = unknown>(database: D1Database): D1Kysely<TDb>;
export declare function executeD1Batch(database: D1Database, queries: readonly D1BatchQuery[]): Promise<D1Result[]>;
