import type { ReceiveType } from '../reflection'; import type { BaseDatabase } from './database'; import type { DriverConnection, ExecuteResult } from './driver'; import type { EntityClass } from './metadata'; import type { QueryBuilder } from './query'; import type { SqlInput } from './sql'; import type { MutexKey } from './database'; import type { EntityMetadata } from './metadata'; import { type DatabaseEntitySnapshot, type DatabaseMutation, type DatabaseQueryMutation } from './mutation'; export interface DatabaseSessionOptions { transactional?: boolean; } export declare class DatabaseSession { readonly db: BaseDatabase; private readonly connection?; private readonly options; private queued; private managed; private removed; private pendingOperations; private pendingOperationErrors; private preCommitHooks; private postCommitHooks; private flushing; private autoFlushSuppressionDepth; private readonly mutationAccumulator; private insertedEntities; private readonly touchedEntities; private readonly transactionStates; private readonly savepointCheckpoints; private nextSavepointSequence; constructor(db: BaseDatabase, connection?: DriverConnection | undefined, options?: DatabaseSessionOptions); getConnection(): DriverConnection | undefined; get isFlushing(): boolean; get shouldAutoFlush(): boolean; get isTransactional(): boolean; add(...entities: object[]): void; manage(...entities: object[]): void; removeQueued(...entities: object[]): void; unmanage(...entities: object[]): void; remove(...entities: object[]): void; trackOperation(worker: () => Promise): Promise; waitForPendingOperations(): Promise; withoutAutoFlush(worker: () => Promise): Promise; query(Entity: EntityClass): QueryBuilder; rawQuery>(input: SqlInput): Promise; rawFind>(input: SqlInput): Promise; rawFindOne>(input: SqlInput): Promise; rawExecute(input: SqlInput): Promise; raw(input: SqlInput): DatabaseSessionRawQuery; rawFindUnsafe>(text: string, bindings?: unknown[], type?: ReceiveType): Promise; rawFindOneUnsafe>(text: string, bindings?: unknown[], type?: ReceiveType): Promise; rawExecuteUnsafe(text: string, bindings?: unknown[], type?: unknown): Promise; acquireSessionLock(key: MutexKey | MutexKey[]): Promise; savepoint(name: string): Promise; rollbackToSavepoint(name: string): Promise; withSavepoint(name: string, worker: () => Promise): Promise; /** Stores transaction-local policy state that participates in savepoint rollback. */ getTransactionState(key: object, create: () => T, checkpoint: (value: T) => TCheckpoint, restore: (value: T, checkpoint: TCheckpoint) => void): T; flush(): Promise; addPreCommitHook(hook: () => Promise): void; addPostCommitHook(hook: () => Promise): void; recordEntityMutation(entity: object, metadata: EntityMetadata, before: DatabaseEntitySnapshot | null, after: DatabaseEntitySnapshot | null): void; /** Tracks successful inserts so savepoint rollback can restore reusable entity instances. */ recordEntityInsert(entity: object, metadata: EntityMetadata, autoIncrementField?: string, previousAutoIncrementValue?: unknown): void; recordQueryMutation(mutation: DatabaseQueryMutation): void; getMutations(): readonly DatabaseMutation[]; runPreCommitHooks(): Promise; runPostCommitHooks(): Promise; private createCheckpoint; private restoreCheckpoint; private assertTransactional; private settlePendingOperations; } export type DbSession = DatabaseSession; export interface DatabaseSessionRawQuery { execute(): Promise; find>(): Promise; findOne>(): Promise; } //# sourceMappingURL=session.d.ts.map