import { Entity, EntityOptions } from './types'; declare type Criteria = { [id: string]: T[Tid]; } | Partial; declare type FindCursor = { toArray(): Promise; }; interface Changes { $push?: { [k in keyof T]?: T[k][]; }; $set?: Partial; $unset?: { [k in keyof T]?: 1; }; } declare type Void = Promise; interface MongoClient { collection: (s: string) => Promise<{ deleteOne: (criteria: Criteria) => Void; insertOne: (o: T) => Void; findOne: (criteria: Criteria) => Promise; find: (criteria: Criteria) => FindCursor; updateOne: (Criteria: Criteria, changes: Changes) => Void; }>; } interface Options extends EntityOptions { onUpdateChanges?: (changes: Changes) => Changes; } declare const create: (getDb: () => Promise, collectionName: string, idProperty: Tid, opts?: Options) => Entity; export default create;