import { EffectSQLiteD1QueryEffectHKT, EffectSQLiteD1RunResult } from "./session.cjs";
import { entityKind } from "../entity.cjs";
import { AnyRelations, EmptyRelations } from "../relations.cjs";
import * as Effect from "effect/Effect";
import { EffectCache } from "../cache/core/cache-effect.cjs";
import { D1Client } from "@effect/sql-d1/D1Client";
import { EffectLogger } from "../effect-core/index.cjs";
import { SQLiteEffectDatabase } from "../sqlite-core/effect/db.cjs";
import { EffectDrizzleSQLiteConfig } from "../sqlite-core/effect/utils.cjs";
import { DefaultServices } from "../effect-core/defaults.cjs";

//#region src/effect-d1/driver.d.ts
type EffectDrizzleSQLiteD1Config<TRelations extends AnyRelations> = Omit<EffectDrizzleSQLiteConfig<TRelations>, 'jit'>;
declare class EffectSQLiteD1Database<TRelations extends AnyRelations = EmptyRelations> extends SQLiteEffectDatabase<EffectSQLiteD1QueryEffectHKT, EffectSQLiteD1RunResult, TRelations> {
  static readonly [entityKind]: string;
}
/**
 * Creates an EffectSQLiteD1Database instance.
 *
 * Requires `D1Client`, `EffectLogger`, and `EffectCache` services to be provided.
 * Use `DefaultServices` to provide default (no-op) logger and cache implementations.
 *
 * @example
 * ```ts
 * // With default services (no logging, no caching)
 * const db = yield* SQLiteD1Drizzle.make({ relations }).pipe(
 *   Effect.provide(SQLiteD1Drizzle.DefaultServices),
 * );
 *
 * // With Effect-based logging
 * const db = yield* SQLiteD1Drizzle.make({ relations }).pipe(
 *   Effect.provide(EffectLogger.layer),
 *   Effect.provide(SQLiteD1Drizzle.DefaultServices),
 * );
 *
 * // With custom Drizzle logger
 * const db = yield* SQLiteD1Drizzle.make({ relations }).pipe(
 *   Effect.provide(EffectLogger.layerFromDrizzle(myLogger)),
 *   Effect.provide(SQLiteD1Drizzle.DefaultServices),
 * );
 * ```
 */
declare const make: <TRelations extends AnyRelations = EmptyRelations>(config: EffectDrizzleSQLiteD1Config<TRelations>) => Effect.Effect<EffectSQLiteD1Database<TRelations> & {
  $client: D1Client;
}, never, EffectCache | EffectLogger | D1Client>;
/**
 * Convenience function that creates an EffectSQLiteD1Database with `DefaultServices` already provided.
 */
declare const makeWithDefaults: <TRelations extends AnyRelations = EmptyRelations>(config: EffectDrizzleSQLiteD1Config<TRelations>) => Effect.Effect<EffectSQLiteD1Database<TRelations> & {
  $client: D1Client;
}, never, D1Client>;
//#endregion
export { DefaultServices, EffectDrizzleSQLiteD1Config, EffectSQLiteD1Database, make, makeWithDefaults };
//# sourceMappingURL=driver.d.cts.map