export interface IConditions { $and: IConditions[]; $or: IConditions[]; $nor: IConditions[]; [key: string]: { $gt?: string | Date | number; $gte?: string | Date | number; $lt?: string | Date | number; $lte?: string | Date | number; $eq?: any; $ne?: any; $in?: any[]; $nin?: any[]; $not: IConditions; $isNull: any; } | any; } export interface IFilter { limit?: number; offset?: number; order?: any; fields?: string[]; conditions?: IConditions; } export interface IQueryExecutor { findOne(filter?: IFilter): Promise; findMany(filter?: IFilter): Promise; findById(id: any): Promise; create(data: Partial): Promise; replaceById(id: ID, replacement: Partial): Promise; update(data: Partial, conditions: IConditions): Promise; updateById(id: ID, data: any): Promise; delete(conditions?: IConditions): Promise; deleteById(id: any): Promise; }