import { default as dayjs, Dayjs } from 'dayjs'; export type FilterType = 'AND' | 'OR' | 'IN' | 'BT_V' | 'BT_D' | 'EQ' | 'NOT' | 'LIKE' | 'NU' | 'NN'; export interface Filter { serialize(): unknown[] | undefined; isEmpty(): boolean; } export interface LeafFilter { getFilterValueString(): string | string[]; } export declare abstract class AbstractFilter implements Filter { protected type: FilterType; protected constructor(type: FilterType); serialize(): unknown[] | undefined; isEmpty(): boolean; } export declare class AndFilter extends AbstractFilter { readonly filters: Filter[]; constructor(filters: Filter[]); toString(): string; serialize(): unknown[] | undefined; isEmpty(): boolean; } export declare class OrFilter extends AbstractFilter { readonly filters: Filter[]; constructor(filters: Filter[]); toString(): string; serialize(): unknown[] | undefined; isEmpty(): boolean; } export declare class NotFilter extends AbstractFilter { readonly filter: Filter; constructor(filter: Filter); toString(): string; serialize(): unknown[] | undefined; isEmpty(): boolean; } export declare class InFilter extends AbstractFilter implements LeafFilter { readonly names: string[]; readonly values: (string | number)[]; readonly ignoreCase?: boolean | undefined; constructor(names: string[], values: (string | number)[], ignoreCase?: boolean | undefined); toString(): string; serialize(): unknown[] | undefined; getFilterValueString(): string | string[]; isEmpty(): boolean; } export declare class LikeFilter extends AbstractFilter implements LeafFilter { readonly names: string[]; readonly value: string; readonly prefix?: boolean | undefined; readonly suffix?: boolean | undefined; readonly ignoreCase: boolean; constructor(names: string[], value: string, prefix?: boolean | undefined, suffix?: boolean | undefined, ignoreCase?: boolean); toString(): string; serialize(): unknown[] | undefined; getFilterValueString(): string | string[]; isEmpty(): boolean; } export declare class EqualFilter extends AbstractFilter implements LeafFilter { readonly names: string[]; readonly value: string | number | boolean; readonly ignoreCase?: boolean | undefined; constructor(names: string[], value: string | number | boolean, ignoreCase?: boolean | undefined); toString(): string; serialize(): unknown[] | undefined; getFilterValueString(): string | string[]; isEmpty(): boolean; } export declare class BetweenFilter extends AbstractFilter { readonly name: string; readonly fromValue?: string | number | undefined; readonly toValue?: string | number | undefined; constructor(name: string, fromValue?: string | number | undefined, toValue?: string | number | undefined); toString(): string; serialize(): unknown[] | undefined; isEmpty(): boolean; } export declare class BetweenDateFilter extends AbstractFilter { readonly name: string; readonly fromValue?: string | Date | dayjs.Dayjs | undefined; readonly toValue?: string | Date | dayjs.Dayjs | undefined; constructor(name: string, fromValue?: string | Date | dayjs.Dayjs | undefined, toValue?: string | Date | dayjs.Dayjs | undefined); toString(): string; serialize(): unknown[] | undefined; isEmpty(): boolean; } export declare class IsNullFilter extends AbstractFilter implements LeafFilter { readonly names: string[]; constructor(names: string[]); toString(): string; serialize(): unknown[] | undefined; getFilterValueString(): string | string[]; isEmpty(): boolean; } export declare class IsNotNullFilter extends AbstractFilter implements LeafFilter { readonly names: string[]; constructor(names: string[]); toString(): string; serialize(): unknown[] | undefined; getFilterValueString(): string | string[]; isEmpty(): boolean; } export declare const andFilter: (filters: Filter[]) => AndFilter; export declare const orFilter: (filters: Filter[]) => OrFilter; export declare const notFilter: (filter: Filter) => NotFilter; export declare const inFilter: (names: string[], values: (string | number)[], ignoreCase?: boolean) => InFilter; export declare const likeFilter: (names: string[], value: string, prefix?: boolean, suffix?: boolean, ignoreCase?: boolean) => LikeFilter; export declare const equalFilter: (names: string[], value: string | number | boolean, ignoreCase?: boolean) => EqualFilter; export declare const betweenFilter: (name: string, fromValue?: string | number, toValue?: string | number) => BetweenFilter; export declare const betweenDateFilter: (name: string, fromValue?: Date | Dayjs | string, toValue?: Date | Dayjs | string) => BetweenDateFilter; export declare const isNullFilter: (names: string[]) => IsNullFilter; export declare const isNotNullFilter: (names: string[]) => IsNotNullFilter; export declare const acceptFilter: (filter: Filter, visit: (filter: Filter) => boolean | undefined) => void;