import { StringFilter } from '../filters/string.filter'; import { IntFilter } from '../filters/int.filter'; import { DecimalFilter } from '../filters/decimal.filter'; import { DateFilter } from '../filters/date.filter'; import { BooleanFilter } from '../filters/boolean.filter'; export type ModelFilterType = { [K in keyof T]?: T[K] extends string ? StringFilter : T[K] extends number ? IntFilter | DecimalFilter : T[K] extends Date ? DateFilter : T[K] extends boolean ? BooleanFilter : T[K] extends object ? ModelFilterType : any; }; export interface FilterMetadata { propertyType: any; isArray?: boolean; isOptional?: boolean; description?: string; } export declare function createFilterClass(modelName: string, filterMetadata: Record): new () => ModelFilterType;