import { InjectionToken } from '@nestjs/common'; import { Filter, MatchKeysAndValues, WithId } from 'mongodb'; import { MongoClientOptions, MongoDatabaseOptions } from './mongodb'; export type Class = new (...args: Array) => TConstructor; export type Options = Record; export type ForRootOptions = TOptions; export type ForRootAsyncOptions = { inject: Array; useFactory: (...args: Array) => Promise | TOptions; }; export type MongoModuleOptions = { uri: string; client?: MongoClientOptions; database?: MongoDatabaseOptions; }; export type ColumnOptions = { unique?: boolean; sparse?: boolean; }; export type EntityColumn = { propertyKey: string; options: ColumnOptions; }; export type EntityMetadata = { columns: Array; }; export type LockHandler = (document: WithId) => TReturn; export type LockOptions = { filter: Filter; document: MatchKeysAndValues; withLockedDocument: LockHandler; };