import { entityKind } from "../entity.js"; import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js"; import { type Query, type SQL } from "../sql/sql.js"; import type { Assume, Equal } from "../utils.js"; import { SingleStoreDatabase } from "./db.js"; import type { SingleStoreDialect } from "./dialect.js"; import type { SelectedFieldsOrdered } from "./query-builders/select.types.js"; export interface SingleStoreQueryResultHKT { readonly $brand: 'SingleStoreQueryResultHKT'; readonly row: unknown; readonly type: unknown; } export interface AnySingleStoreQueryResultHKT extends SingleStoreQueryResultHKT { readonly type: any; } export type SingleStoreQueryResultKind = (TKind & { readonly row: TRow; })['type']; export interface SingleStorePreparedQueryConfig { execute: unknown; iterator: unknown; } export interface SingleStorePreparedQueryHKT { readonly $brand: 'SingleStorePreparedQueryHKT'; readonly config: unknown; readonly type: unknown; } export type PreparedQueryKind = Equal extends true ? Assume<(TKind & { readonly config: TConfig; })['type'], SingleStorePreparedQuery> : (TKind & { readonly config: TConfig; })['type']; export declare abstract class SingleStorePreparedQuery { static readonly [entityKind]: string; abstract execute(placeholderValues?: Record): Promise; abstract iterator(placeholderValues?: Record): AsyncGenerator; } export interface SingleStoreTransactionConfig { withConsistentSnapshot?: boolean; accessMode?: 'read only' | 'read write'; isolationLevel: 'read committed'; } export declare abstract class SingleStoreSession = Record, TSchema extends TablesRelationalConfig = Record> { protected dialect: SingleStoreDialect; static readonly [entityKind]: string; constructor(dialect: SingleStoreDialect); abstract prepareQuery(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record[], returningIds?: SelectedFieldsOrdered): PreparedQueryKind; execute(query: SQL): Promise; abstract all(query: SQL): Promise; count(sql: SQL): Promise; abstract transaction(transaction: (tx: SingleStoreTransaction) => Promise, config?: SingleStoreTransactionConfig): Promise; protected getSetTransactionSQL(config: SingleStoreTransactionConfig): SQL | undefined; protected getStartTransactionSQL(config: SingleStoreTransactionConfig): SQL | undefined; } export declare abstract class SingleStoreTransaction = Record, TSchema extends TablesRelationalConfig = Record> extends SingleStoreDatabase { protected schema: RelationalSchemaConfig | undefined; protected readonly nestedIndex: number; static readonly [entityKind]: string; constructor(dialect: SingleStoreDialect, session: SingleStoreSession, schema: RelationalSchemaConfig | undefined, nestedIndex: number); rollback(): never; /** Nested transactions (aka savepoints) only work with InnoDB engine. */ abstract transaction(transaction: (tx: SingleStoreTransaction) => Promise): Promise; } export interface PreparedQueryHKTBase extends SingleStorePreparedQueryHKT { type: SingleStorePreparedQuery>; }