import { Collection, MongoClient } from "mongodb"; import { Table } from "./core/table"; import { MappingRegistry } from "./mapping/mappingRegistry"; import { Session, InternalSession } from "./session"; import { Constructor } from "./index"; import { Persister } from "./persister"; import { EntityMapping } from "./mapping/entityMapping"; import { Logger } from "./config/configuration"; import { Callback } from "./core/callback"; export interface SessionFactory { connection: MongoClient; getCollection(ctr: Constructor): Collection; createSession(): Session; createIndexes(callback: Callback): void; createIndexes(options: CreateIndexesOptions, callback: Callback): void; dropIndexes(callback: Callback): void; } export interface CreateIndexesOptions { background?: boolean; } export interface InternalSessionFactory extends SessionFactory { logger: Logger; getMappingForObject(obj: any): EntityMapping; getMappingForConstructor(ctr: Constructor): EntityMapping; createPersister(session: InternalSession, mapping: EntityMapping): Persister; } export declare class SessionFactoryImpl implements InternalSessionFactory { connection: MongoClient; logger: Logger; private _collections; private _mappingRegistry; constructor(connection: MongoClient, collections: Table, mappingRegistry: MappingRegistry); createSession(): Session; getCollection(ctr: Constructor): Collection; getMappingForObject(obj: any): EntityMapping; getMappingForConstructor(ctr: Constructor): EntityMapping; createPersister(session: InternalSession, mapping: EntityMapping): Persister; createIndexes(callback: Callback): void; createIndexes(options: CreateIndexesOptions, callback: Callback): void; dropIndexes(callback: Callback): void; }