export interface SdFilterOption {
    key?: string;
    quickFilter?: {
        enable?: boolean;
        selectedDefault?: string;
        defaults?: SdQuickFilter[];
    };
    filters: Filter[];
    onChange?: (filter: {
        [key: string]: any;
    }) => void;
}
export interface SdQuickFilter {
    code: string;
    name: string;
    filter?: {
        [key: string]: any;
    };
    filterDef?: {
        [key: string]: any;
    };
}
export interface SdFilterInformation {
    filter: {
        [key: string]: any;
    };
    filterDef?: {
        [key: string]: any;
    };
    visible?: {
        [key: string]: boolean;
    };
    quickFilters?: SdQuickFilter[];
    selectedQuickFilter?: string;
}
export declare type Filter = StringFilter | NumberFilter | ValuesLocalFilter | ValuesServerFilter | DateFilter | DateRageFilter | BoolFilter;
export interface BaseFilter {
    field: string;
    title: string;
    group?: string;
    showing?: boolean;
}
export interface StringFilter extends BaseFilter {
    type: 'string';
    default?: any;
}
export interface NumberFilter extends BaseFilter {
    type: 'number';
    default?: any;
}
export interface ValuesLocalFilter extends BaseFilter {
    type: 'values-local';
    option: {
        items: any[] | (() => Promise<any[]>);
        valueField: string;
        displayField: string;
        htmlTemplate?: (item: any) => string;
        selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';
    };
    default?: any;
}
export interface ValuesServerFilter extends BaseFilter {
    type: 'values-server';
    option: {
        items: (searchText: string | string[], isFormValue?: boolean) => Promise<any[]>;
        valueField: string;
        displayField: string;
        htmlTemplate?: (item: any) => string;
        selection?: 'MULTIPLE';
    };
    default?: any;
}
export interface DateFilter extends BaseFilter {
    type: 'date' | 'datetime';
    option?: {
        max?: string;
        min?: string;
    };
    default?: string;
}
export interface DateRageFilter extends BaseFilter {
    type: 'daterange';
    option?: {
        max?: string;
        min?: string;
    };
    default?: {
        from?: string;
        to?: string;
    };
}
export interface BoolFilter extends BaseFilter {
    type: 'bool';
    option: {
        displayOnTrue: string;
        displayOnFalse: string;
    };
    default?: boolean;
}
export interface FilterObject {
    [key: string]: any | {
        from: string;
        to: string;
    };
}
