/**
 * NOTE: TRANSACTIONS ARE ONLY SUPPORTED BY REPLICA SETS
 *
 * Transaction numbers are only allowed on a replica set member or mongos
 *
 * @see https://www.mongodb.com/docs/manual/core/transactions-operations/
 */
import { MongoConnector } from '@tmlmobilidade/connectors';
import { ClientSession } from 'mongodb';
import { MongoCollectionClass } from './mongo-collection.js';
export declare class Transaction {
    private mongoConnector;
    private session;
    constructor(mongoConnector: MongoConnector);
    abort(): Promise<void>;
    commit(): Promise<void>;
    getSession(): ClientSession;
    start(): Promise<void>;
}
export declare class TransactionManager {
    private collections;
    private transactions;
    constructor(collections: MongoCollectionClass<any, any, any>[]);
    withTransaction<T>(callback: (collections: MongoCollectionClass<any, any, any>[], transactions: Map<MongoCollectionClass<any, any, any>, Transaction>) => Promise<T>): Promise<T>;
}
