/// <reference types="react" />
export interface IFilter {
    /** 名称,展示的文本 */
    name: string;
    /** 关键字,唯一标识的值 */
    keyword: string;
    /** 英文名称,展示的文本 */
    nameEN?: string;
    /** 选项前面的图标 */
    icon?: React.ReactNode;
    /** 选项后面的图标 */
    suffix?: React.ReactNode;
    /** 过滤面板选择过滤项时，每个选项的最大宽度，默认是300px */
    menuOptionMaxWidth?: string;
}
export declare type ValueType = 'string' | 'json' | 'number';
export declare type IlabelType = 'filter' | 'text' | 'edit' | 'error';
export interface ILabel extends IFilter {
    /** 类型  text表示选中的文本标签，filter表示过滤标签, edit表示当前组件处于编辑状态 */
    type?: IlabelType;
    /** 操作符key值 */
    operator?: string;
    /** @description 用户传入的operator备份，防止被覆盖*/
    initialOperator?: string;
    /** 传给后台的值,介于的情况为字符串数组，有些多选情况为json字符串 */
    value?: string | number | [string, string] | Array<string | number>;
    /** 传给后台值的类型，分为字符串和json字符串2种类型 */
    valueType?: ValueType;
    /** 页面上展示的值 */
    displayValue?: string | number | [string, string] | Array<string | number>;
    /** 值的类型 */
    prototype?: 'text' | 'number' | 'date' | 'radio' | 'checkbox' | 'tree' | 'custom';
    /** 单位 */
    unit?: string;
    /** 操作符显示的名称 */
    operatorName?: string;
    /** 设置好的过滤项是否可以删除 */
    deleteable?: boolean;
    /** 父级的keyword */
    group?: string;
    /** 过滤面板中不包含该过滤项时，该过滤项是否展示,默认不展示 */
    forceDisplay?: boolean;
    /** 与当前过滤项相关的另一过滤项的keyword, 删除当前过滤项时，相关的另一过滤项也一起删除 */
    bindKeyword?: string;
    /** 是否不允许编辑 */
    disableEdit?: boolean;
    /** 字段是否能搜索 */
    search?: boolean;
    /** 字段是否初始化隐藏 */
    initHide?: boolean;
    /** @description 菜单搜索自定义前缀,search为true才会生效 @default undefined  */
    searchPrefix?: React.ReactNode;
    /** @description 菜单搜索自定义操作符 @default contain  */
    searchOperator?: IOperator;
    /** @description Checkbox多选的情况需要返回是否全选  */
    checkAll?: boolean;
    /** @description 是否转为Text类型  */
    toText?: boolean;
    /** 多选情况，选中的值不用逗号拼接 */
    originValue?: (string | {
        value: string;
    })[];
    /** 是否是不生效标签 */
    isNoEffectLabels?: boolean;
    /** 名称带上多少父级名称的层级 */
    showNameLevel?: number;
    /** 名称带上父级名称的层级 */
    nameLevel?: string;
    menuType?: IMenuOptionPrototype;
    /** @description 自定义操作符 */
    customOperators?: IOperator[];
}
export interface ILabelDefault {
    keyword: string;
    name?: string;
    type?: IlabelType;
    operator?: string;
    value?: string | number | [string, string] | Array<string | number>;
    valueType?: ValueType;
    displayValue?: string | number | [string, string] | Array<string | number>;
    prototype?: 'text' | 'number' | 'date' | 'radio' | 'checkbox' | 'tree' | 'custom';
    unit?: string;
    operatorName?: string;
    deleteable?: boolean;
    group?: string;
    forceDisplay?: boolean;
}
export declare type IMenuOptionPrototype = 'Text' | 'Number' | 'Date' | 'Radio' | 'Checkbox' | 'Custom' | 'Tree' | 'Group';
export interface IMenuOption extends IFilter, ITemplate {
    type: 'group' | 'option';
    children: IMenuOption[];
    menuType: IMenuOptionPrototype;
    queryMode?: boolean;
    /** @description 菜单搜索自定义前缀 @default undefined  */
    searchPrefix?: React.ReactNode;
    /** @description 菜单搜索自定义操作符 @default contain  */
    searchOperator?: IOperator;
    rules?: Rule[];
}
export interface IOperator extends IFilter {
    popover?: boolean;
}
export interface KeywordOperator {
    [key: string]: IOperator | undefined;
}
export declare type RangeValue = [string, string];
export interface Rule {
    validator: RegExp;
    message: string;
}
export declare type SearchType = 'web' | 'url';
export interface IMenuOptionChild extends ILabel, ITemplate {
    menuType: IMenuOptionPrototype & 'Option';
    nameWithParents?: string;
    fromSearch?: boolean;
    queryMode?: boolean;
    rules?: Rule[];
    customOperators?: IOperator[];
}
export interface TreeData {
    key: string;
    title: string;
    children?: TreeData[];
    parentsKey?: string;
    parentsTitle?: string;
    isLeaf?: boolean;
}
export declare type PanelPlacement = 'top' | 'left' | 'right' | 'bottom' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom';
export interface TextValue {
    name: string;
    keyword: string;
}
export interface ITemplate {
    name: string;
    content?: ILabel[];
}
