export type Operator = keyof OperatorType; export type OperatorType = { eq?: T; gt?: T extends number | Date ? T : never; gte?: T extends number | Date ? T : never; lt?: T extends number | Date ? T : never; lte?: T extends number | Date ? T : never; ne?: T; in?: T[]; nin?: T[]; contains?: T extends string ? string : never; startsWith?: T extends string ? string : never; endsWith?: T extends string ? string : never; btw?: T extends number ? [T, T] : never; }; type WhereCondition = { [K in keyof T]?: T[K] | Partial>; }; export type Where> = WhereCondition | { [K in keyof OperatorType]?: Partial; }; export {};