/// <reference types="node" />
export type IValueOfListFilterType<T> = {
    value: T;
};
export type IFilterMethodType = 'equal' | 'from' | 'to' | 'between' | 'list' | 'contain' | undefined;
export interface IFilterBase<T, L> {
    key: string;
    method: IFilterMethodType;
    setMethodValue: (value: number | undefined) => void;
    getMethodValue: () => 0 | 1 | 2 | 3 | 4 | undefined;
    isFiltered: () => boolean;
    clearFilter: () => void;
    keyOfMethod: string;
    list: {
        value: L;
    }[] | undefined;
    itemOfListValue?: T;
    multiItem?: IValueOfListFilterType<L>;
    multiItemTimer?: NodeJS.Timeout;
}
export declare abstract class FilterBase<T, L, FILTERTYPE> implements IFilterBase<T, L> {
    abstract key: string;
    abstract method: IFilterMethodType;
    abstract setMethodValue: (value: number | undefined) => void;
    abstract getMethodValue: () => 0 | 1 | 2 | 3 | 4 | undefined;
    abstract getFilter: () => FILTERTYPE | undefined;
    abstract isFiltered: () => boolean;
    abstract clearFilter: () => void;
    abstract keyOfMethod: string;
    list: {
        value: L;
    }[] | undefined;
    abstract itemOfListValue?: T;
    abstract multiItem?: IValueOfListFilterType<L>;
    abstract multiItemTimer?: NodeJS.Timeout;
}
