import { DbQuery, RemoveStats, UpdateStats } from "../domain/types"; import { PropertyInfo, ConstructorOf } from "../types"; import { DbQueryFactory } from "./db-query-factory"; import { RepositoryQuery } from "../domain/repository-query"; export type SourceOptions = { modelClass?: ConstructorOf; modelFieldMappings?: Record; queries?: DbQueryFactory; [key: string]: unknown; }; export interface Source { collectionName: string; options?: SourceOptions; find(query?: DbQuery): Promise; count(query?: DbQuery): Promise; aggregate(query: DbQuery): Promise; update(query: DbQuery): Promise; insert(query: DbQuery): Promise; remove(query: DbQuery): Promise; native(query: DbQuery | RepositoryQuery): Promise; }