import { type ClientSession, type Collection, type Db, MongoClient, type MongoClientOptions, type TransactionOptions } from 'mongodb'; import { type AnyEntity, type CollationOptions, type Configuration, Connection, type ConnectionOptions, type ConnectionType, type Dictionary, type EntityData, type EntityName, type FilterQuery, type IsolationLevel, type LoggingOptions, type QueryOrderMap, type QueryResult, type Transaction, type TransactionEventBroadcaster, type UpsertManyOptions, type UpsertOptions } from '@mikro-orm/core'; /** MongoDB database connection using the official `mongodb` driver. */ export declare class MongoConnection extends Connection { #private; constructor(config: Configuration, options?: ConnectionOptions, type?: ConnectionType); connect(options?: { skipOnConnect?: boolean; }): Promise; createClient(): void; close(force?: boolean): Promise; isConnected(): Promise; checkConnection(): Promise<{ ok: true; } | { ok: false; reason: string; error?: Error; }>; getClient(): MongoClient; getCollection(name: EntityName | string): Collection; createCollection(name: EntityName): Promise>; listCollections(): Promise; dropCollection(name: EntityName): Promise; mapOptions(overrides: MongoClientOptions): MongoClientOptions; getDb(): Db; execute(query: string): Promise; find(entityName: EntityName, where: FilterQuery, opts?: MongoFindOptions): Promise[]>; stream(entityName: EntityName, where: FilterQuery, opts?: MongoFindOptions): AsyncIterableIterator; private _find; insertOne(entityName: EntityName, data: Partial, ctx?: Transaction, signal?: AbortSignal): Promise>; insertMany(entityName: EntityName, data: Partial[], ctx?: Transaction, signal?: AbortSignal): Promise>; updateMany(entityName: EntityName, where: FilterQuery, data: Partial, ctx?: Transaction, upsert?: boolean, upsertOptions?: UpsertOptions, signal?: AbortSignal): Promise>; bulkUpdateMany(entityName: EntityName, where: FilterQuery[], data: Partial[], ctx?: Transaction, upsert?: boolean, upsertOptions?: UpsertManyOptions, signal?: AbortSignal): Promise>; deleteMany(entityName: EntityName, where: FilterQuery, ctx?: Transaction, signal?: AbortSignal): Promise>; aggregate(entityName: EntityName, pipeline: any[], ctx?: Transaction, loggerContext?: LoggingOptions, signal?: AbortSignal): Promise; streamAggregate(entityName: EntityName, pipeline: any[], ctx?: Transaction, loggerContext?: LoggingOptions, stream?: boolean, signal?: AbortSignal): AsyncIterableIterator; countDocuments(entityName: EntityName, where: FilterQuery, opts?: MongoCountOptions): Promise; transactional(cb: (trx: Transaction) => Promise, options?: { isolationLevel?: IsolationLevel; ctx?: Transaction; eventBroadcaster?: TransactionEventBroadcaster; } & TransactionOptions): Promise; begin(options?: { isolationLevel?: IsolationLevel; ctx?: ClientSession; eventBroadcaster?: TransactionEventBroadcaster; } & TransactionOptions): Promise; commit(ctx: ClientSession, eventBroadcaster?: TransactionEventBroadcaster): Promise; rollback(ctx: ClientSession, eventBroadcaster?: TransactionEventBroadcaster): Promise; private runQuery; private rethrow; private createUpdatePayload; private transformResult; private getCollectionName; private logObject; } /** Options shared across MongoDB query operations. */ export interface MongoQueryOptions { collation?: CollationOptions; indexHint?: string | Dictionary; maxTimeMS?: number; allowDiskUse?: boolean; /** * Forwarded to the MongoDB driver. When fired, the driver aborts the in-flight operation * by closing the underlying socket; the rejection reason is `signal.reason`. */ signal?: AbortSignal; } /** Options for MongoDB find operations. */ export interface MongoFindOptions extends MongoQueryOptions { orderBy?: QueryOrderMap | QueryOrderMap[]; limit?: number; offset?: number; fields?: string[]; chunkSize?: number; ctx?: Transaction; loggerContext?: LoggingOptions; } /** Options for MongoDB count operations. */ export interface MongoCountOptions extends Omit { ctx?: Transaction; loggerContext?: LoggingOptions; }