///
import { AsyncLocalStorage } from "async_hooks";
import { ClientSession, ClientSessionOptions, Collection, Db } from "mongodb";
import { Connection } from "./connection";
export type DatabaseSessionTransaction = {
session: ClientSession;
database: Database;
};
export declare class Database {
/**
* MongoDB Internal Database instance
*/
database: Db;
/**
* Current Connection
*/
connection: Connection;
sessionsContainer: AsyncLocalStorage;
/**
* Set connection instance
*/
setConnection(connection: Connection): this;
/**
* Set database instance
*/
setDatabase(database: Db): this;
/**
* Get database collection instance
*/
collection(collection: string): Collection;
/**
* List collection names
*/
listCollectionNames(): Promise;
/**
* Drop database
*/
drop(): Promise;
/**
* Start a new session
*/
startSession(callback: (transaction: DatabaseSessionTransaction) => Promise, sessionOptions?: ClientSessionOptions): any;
/**
* Create a new transaction session and wrap it with a context
*/
startSessionContext(callback: (transaction: DatabaseSessionTransaction) => Promise, sessionOptions?: ClientSessionOptions): Promise;
/**
* Get active session
*/
getActiveSession(): DatabaseSessionTransaction;
}
export declare const database: Database;
//# sourceMappingURL=database.d.ts.map