import { entityKind } from "../entity.cjs";
import { Query } from "../sql/sql.cjs";
import { DrizzleTypeError } from "../utils.cjs";
import { Logger } from "../logger.cjs";
import { AnyRelations } from "../relations.cjs";
import { SQLiteExecuteMethod, SQLiteTransactionConfig } from "../sqlite-core/session.cjs";
import { SQLiteAsyncPreparedQuery, SQLiteAsyncPreparedQueryConfig, SQLiteAsyncSession, SQLiteAsyncTransaction } from "../sqlite-core/async/session.cjs";
import { SQLiteDialect } from "../sqlite-core/index.cjs";

//#region src/durable-sqlite/session.d.ts
interface SQLiteDOSessionOptions {
  logger?: Logger;
}
type PreparedQueryConfig$1 = Omit<SQLiteAsyncPreparedQueryConfig, 'statement' | 'run'>;
type DurableSQLiteRunResult = SqlStorageCursor<Record<string, SqlStorageValue>>;
declare class SQLiteDOSession<TRelations extends AnyRelations> extends SQLiteAsyncSession<'sync', DurableSQLiteRunResult, TRelations> {
  private client;
  private relations;
  private options;
  static readonly [entityKind]: string;
  private logger;
  constructor(client: DurableObjectStorage, dialect: SQLiteDialect, relations: TRelations, options?: SQLiteDOSessionOptions);
  prepareQuery<T extends Omit<PreparedQueryConfig$1, 'run'>>(query: Query, mode: 'arrays' | 'objects' | 'raw', _prepare: boolean, executeMethod?: SQLiteExecuteMethod, mapper?: (rows: any[]) => any, queryMetadata?: {
    type: 'select' | 'update' | 'delete' | 'insert';
    tables: string[];
  }): SQLiteAsyncPreparedQuery<T & {
    run: DurableSQLiteRunResult;
  }>;
  transaction<T>(transaction: (tx: SQLiteAsyncTransaction<'sync', DurableSQLiteRunResult, TRelations>) => T, config?: SQLiteTransactionConfig): T;
}
declare class SQLiteDOTransaction<TRelations extends AnyRelations> extends SQLiteAsyncTransaction<'sync', DurableSQLiteRunResult, TRelations> {
  static readonly [entityKind]: string;
  transaction<T>(transaction: (tx: SQLiteDOTransaction<TRelations>) => T extends Promise<any> ? DrizzleTypeError<"Sync drivers can't use async functions in transactions!"> : T): T;
}
//#endregion
export { DurableSQLiteRunResult, SQLiteDOSession, SQLiteDOSessionOptions, SQLiteDOTransaction };
//# sourceMappingURL=session.d.cts.map