import { ICondition } from "./filteringCondition"; import { ResourceInterface } from "./resource"; export declare class FieldFilter { readonly fieldName: string; constructor(fieldName: string); isGreaterThan(value: U): IFilteringCriterion; isLessThan(value: U): IFilteringCriterion; isEqualTo(value: U): IFilteringCriterion; isDifferentFrom(value: U): IFilteringCriterion; isEqualOrGreaterThan(value: U): IFilteringCriterion; isEqualOrLessThan(value: U): IFilteringCriterion; isNull(): IFilteringCriterion; isNotNull(): IFilteringCriterion; isInArray(values: U[]): IFilteringCriterion; isNotInArray(values: U[]): IFilteringCriterion; isLike(value: string): IFilteringCriterion; satisfiesRegex(regex: string): IFilteringCriterion; isBetween(start: U, end: U): IFilteringCriterion; } export declare class FilteringCriterion implements IFilteringCriterion { private lowLevelCondition; constructor(lowLevelCondition?: ICondition, highLevelCriteria?: FilteringCriterion); get condition(): ICondition; and(conditionToAdd: FilteringCriterion): FilteringCriterion; or(conditionToAdd: FilteringCriterion): FilteringCriterion; } export interface IFilteringCriterion { readonly condition: ICondition; and(conditionToAdd: IFilteringCriterion): IFilteringCriterion; or(conditionToAdd: IFilteringCriterion): IFilteringCriterion; } export declare function field, K extends Extract, string> = any>(name: K): FieldFilter[K]>; export declare type IFilteringCriterionCallback = (filter: >(field: K) => FieldFilter) => IFilteringCriterion; export declare function combineCriteria(criteria: IFilteringCriterion): IFilteringCriterion; export declare function toFilteringCriterion(filter: IFilteringCriterion | IFilteringCriterionCallback): IFilteringCriterion;