export interface Search { condition?: 'and' | 'or'; rules: (SearchRule | Search)[]; } export type SearchOperator = 'empty' | 'notEmpty' | 'equals' | 'eq' | '=' | 'notEquals' | 'ne' | '!=' | 'contains' | 'notContains' | 'startsWith' | 'notStartsWith' | 'endsWith' | 'notEndsWith' | 'like' | 'notLike' | 'greaterThan' | 'gt' | '>' | 'greaterThanOrEquals' | 'gte' | '>=' | 'lessThan' | 'lt' | '<' | 'lessThanOrEquals' | 'lte' | '<=' | 'in' | 'between'; export interface SearchRule { field: string; operator: SearchOperator; value?: any; options?: { ignoreCase?: boolean; }; }