export interface Predicate { (param: T): boolean; } export interface Callable { (...xs: any): any; } export interface Localized { locale: string; } export declare type FilterCriteriaRecord> = { [K in keyof T]?: T[K] | Predicate; }; export declare type FilterCriteriaRecordValue> = FilterCriteriaRecord[keyof T]; export declare type FilterCriteriaRecordField> = [ keyof T, FilterCriteriaRecordValue ]; export declare function isCallableCriteriaRecordValue(value: FilterCriteriaRecordValue): value is Predicate; export declare function filterByCriteriaRecordField(target: T): ([key, value]: FilterCriteriaRecordField) => boolean; export declare function filterByCriteriaRecord(criteria: FilterCriteriaRecord): (target: T) => boolean; export declare function filterArrayByCriteriaRecord(array: T[], criteria?: FilterCriteriaRecord): T[];