import { Collection, Document, ClientSession } from 'mongodb';
import { BaseModel } from './base_model/base_model.js';
import { ModelQueryBuilder } from './query_builder/model_query_builder.js';
import { ModelConstructor } from './types/index.js';
import type { MongoDatabaseManager } from './database_manager.js';
export interface MongoTransactionClient {
    commit(): Promise<void>;
    rollback(): Promise<void>;
    collection<T extends Document = Document>(name: string): Collection<T>;
    query<T extends BaseModel = BaseModel>(modelConstructor: ModelConstructor): ModelQueryBuilder<Document, T>;
    getSession(): ClientSession;
}
export declare class ConcreteMongoTransactionClient implements MongoTransactionClient {
    private session;
    private manager;
    private connectionName;
    constructor(session: ClientSession, manager: MongoDatabaseManager, connectionName: string);
    commit(): Promise<void>;
    rollback(): Promise<void>;
    collection<T extends Document = Document>(name: string): Collection<T>;
    query<T extends BaseModel = BaseModel>(modelConstructor: ModelConstructor): ModelQueryBuilder<Document, T>;
    getSession(): ClientSession;
}
//# sourceMappingURL=transaction_client.d.ts.map