import { entityKind } from "../entity.cjs";
import { Query } from "../sql/sql.cjs";
import { Assume } from "../utils.cjs";
import * as V1 from "../_relations.cjs";
import { Logger } from "../logger.cjs";
import { CockroachDialect } from "../cockroach-core/dialect.cjs";
import { CockroachPreparedQuery, CockroachQueryResultHKT, CockroachSession, CockroachTransactionConfig, PreparedQueryConfig } from "../cockroach-core/session.cjs";
import pg, { Client, PoolClient, QueryResult, QueryResultRow } from "pg";
import { CockroachTransaction as CockroachTransaction$1 } from "../cockroach-core/index.cjs";

//#region src/cockroach/session.d.ts
type NodeCockroachClient = pg.Pool | PoolClient | Client;
interface NodeCockroachSessionOptions {
  logger?: Logger;
}
declare class NodeCockroachSession<TFullSchema extends Record<string, unknown>, TSchema extends V1.TablesRelationalConfig> extends CockroachSession<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {
  private client;
  private schema;
  private options;
  static readonly [entityKind]: string;
  private logger;
  constructor(client: NodeCockroachClient, dialect: CockroachDialect, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options?: NodeCockroachSessionOptions);
  prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, mode: 'arrays' | 'objects' | 'raw', name: string | boolean, mapper?: (rows: any[]) => any): CockroachPreparedQuery<T>;
  transaction<T>(transaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>, config?: CockroachTransactionConfig | undefined): Promise<T>;
}
declare class NodeCockroachTransaction<TFullSchema extends Record<string, unknown>, TSchema extends V1.TablesRelationalConfig> extends CockroachTransaction$1<NodeCockroachQueryResultHKT, TFullSchema, TSchema> {
  static readonly [entityKind]: string;
  transaction<T>(transaction: (tx: NodeCockroachTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
}
interface NodeCockroachQueryResultHKT extends CockroachQueryResultHKT {
  type: QueryResult<Assume<this['row'], QueryResultRow>>;
}
//#endregion
export { NodeCockroachClient, NodeCockroachQueryResultHKT, NodeCockroachSession, NodeCockroachSessionOptions, NodeCockroachTransaction };
//# sourceMappingURL=session.d.cts.map