export type Entity = Record; type NumberFilter = number | { eq?: number; ne?: number; gt?: number; gte?: number; lt?: number; lte?: number; in?: number[]; nin?: number[]; }; type StringFilter = string | { eq: string; } | { regex: string; flags?: string; } | { ne: string; } | { gt: string; } | { gte: string; } | { lt: string; } | { lte: string; } | { in: string[]; } | { nin: string[]; }; type BooleanFilter = boolean | { eq?: boolean; ne?: boolean; }; type DateFilter = Date | { eq?: Date; ne?: Date; gt?: Date; gte?: Date; lt?: Date; lte?: Date; in?: Date[]; nin?: Date[]; }; type ArrayFilter = T[] | { eq?: T[]; ne?: T[]; in?: T[]; nin?: T[]; }; export type Filter = T extends number ? NumberFilter : T extends string ? StringFilter : T extends boolean ? BooleanFilter : T extends Date ? DateFilter : T extends Array ? ArrayFilter : never; export type WhereOptions = { [K in keyof E]?: Filter; } | { and: WhereOptions[]; } | { or: WhereOptions[]; }; export type SortDirection = 'asc' | 'desc'; export type SortOptions = { [K in keyof E]?: SortDirection; }; type ProjectionOptions1 = { [K in keyof E]?: 1; }; type ProjectionOptions0 = { [K in keyof E]?: 0; }; export type ProjectionOptions = ProjectionOptions1 | ProjectionOptions0; export type FindOptions = { where?: WhereOptions; limit?: number; skip?: number; sort?: SortOptions; }; export {}; //# sourceMappingURL=filter.d.ts.map