import { TemplateRef } from '@angular/core';
export declare type CategorySearchTagType = 'radio' | 'checkbox' | 'dateRange' | 'label' | 'textInput' | 'numberRange' | 'treeSelect' | 'keyword';
export interface ITagOption {
    /**
     * 选项，label和color默认都会取对应的 filterKey 和 colorKey，如未设置取默认值
     */
    label?: string;
    color?: string;
    [propName: string]: any;
}
/**
 * 候选tag数据配置项
 */
export interface ICategorySearchTagItem {
    /**
     * 搜索字段，tag的键，用于区分不同的分类，需要唯一
     */
    field: string;
    /**
     * tag 键的显示值
     */
    label: string;
    /**
     * 配置项可生产的tag类型
     */
    type?: CategorySearchTagType;
    /**
     * 配置项所属的分组
     */
    group?: string;
    /**
     * tag 值的选择项数据
     */
    options?: Array<ITagOption>;
    /**
     * 用于显示的 tag 值的键值，如未设置默认取label
     */
    filterKey?: string | 'label';
    /**
     * 用于显示的label类型中色值的键值，如未设置默认取color
     */
    colorKey?: 'color';
    /**
     * 自定义下拉模板的展示内容
     */
    customTemplate?: TemplateRef<any>;
    /**
     * 已选中值
     */
    value?: {
        label?: string;
        value?: string | ITagOption | Array<ITagOption | number | string>;
        cache?: string | ITagOption | Array<ITagOption | number | string>;
        [propName: string]: any;
    };
    [propName: string]: any;
}
export interface SelectedTagsEvent {
    selectedTags: Array<ICategorySearchTagItem>;
    currentChangeTag: ICategorySearchTagItem;
    operation: 'add' | 'delete' | 'clear';
}
export interface CreateFilterEvent {
    name: string;
    selectedTags: Array<ICategorySearchTagItem>;
    keyword: string;
}
export interface SearchEvent {
    selectedTags: Array<ICategorySearchTagItem>;
    searchKey: string;
}
export interface SearchConfig {
    keyword?: boolean;
    keywordDescription?: (searchKey: string) => string;
    field?: boolean;
    fieldDescription?: (label: string) => string;
    category?: boolean;
    categoryDescription?: string;
}
export declare const ALLOWED_SEARCH_FIELD_TYPES: string[];
export declare const COLORS: string[];
