import { ClientSession, Connection } from 'mongoose';
/**
 * Models a callback function that writes to and reads from the database using a session.
 */
type DbCallback<T> = (session: ClientSession) => Promise<T>;
/**
 * Specifies transaction options.
 * @property {ClientSession} session (optional) - a transaction session, required to run the operation within an existing transaction.
 */
export type TransactionOptions = {
    session?: ClientSession;
};
/**
 * Runs the provided callback function within a transaction and commits the changes to the database
 * iff it has run successfully.
 *
 * @param {DbCallback<T>} callback a callback function that writes to and reads from the database using a session.
 * @param {TransactionOptions} options (optional) some options about the transaction.
 */
export declare function runInTransaction<T>(callback: DbCallback<T>, options?: TransactionOptions & {
    connection?: Connection;
}): Promise<T>;
export {};
