import React, { Component, MouseEvent, ReactElement, ReactNode } from 'react';
import ConfigContext, { ConfigContextValue } from '../../../../es/config-provider/ConfigContext';
import { TableFilterAdapterProps } from '../../../../es/configure';
import Popover from '../../../../es/popover';
import Field, { DynamicProps, FieldProps, Fields } from '../../data-set/Field';
import DataSet, { DataSetProps } from '../../data-set/DataSet';
import Record from '../../data-set/Record';
import { FieldIgnore, FieldType } from '../../data-set/enum';
import TextField from '../../text-field';
import { ElementProps } from '../../core/ViewComponent';
import { ButtonProps } from '../../button/Button';
import { DynamicFilterBarConfig } from '../Table';
import { TransportProps } from '../../data-set/Transport';
import TableStore from '../TableStore';
/**
 * 当前数据是否有值并需要选中
 * @param data
 */
export declare function isSelect(data: any): boolean;
export declare function isEqualDynamicProps(originalValue: any, newValue: any, dataSet?: DataSet, record?: Record, name?: string): boolean;
/**
 * 提交副本数据
 * @param data
 */
export declare function omitData(data: any): Pick<any, string | number | symbol>;
/**
 * obj 值使用 JSON 保存、获取赋值转化
 * @param value
 */
export declare function parseValue(value: any): any;
export declare function stringifyValue(value: any): any;
/**
 * 处理查询过滤条件
 * @params
 */
export declare function processFilterParam(dataSet: any): void;
/**
 * 高级搜索字段配置类型声明
 */
export interface AdvancedSearchField {
    name: string;
    /**
     * 字段关联表
     */
    tableName?: string;
    /**
     * 字段别名
     */
    alias?: string;
    /**
     * 字段配置来源
     */
    source?: 'fields' | 'queryFields' | 'other';
    /**
     * 其他字段 & 配置覆盖
     */
    fieldProps?: FieldProps;
}
export interface TableDynamicFilterBarProps extends ElementProps {
    dataSet: DataSet;
    queryDataSet?: DataSet;
    queryFields: ReactElement<any>[];
    queryFieldsLimit?: number;
    buttons?: ReactElement<ButtonProps>[];
    summaryBar?: ReactElement<any>;
    dynamicFilterBar?: DynamicFilterBarConfig;
    onQuery?: () => void;
    onReset?: () => void;
    autoQueryAfterReset?: boolean;
    fuzzyQuery?: boolean;
    fuzzyQueryOnly?: boolean;
    fuzzyQueryPlaceholder?: string;
    searchCode?: string;
    autoQuery?: boolean;
    refreshBtn?: boolean;
    onRefresh?: () => Promise<boolean | undefined> | boolean | undefined | void;
    sortableFieldNames?: string[];
    advancedSearchFields?: AdvancedSearchField[];
    defaultActiveKey?: string;
    tableStore?: TableStore;
}
export declare const CONDITIONSTATUS = "__CONDITIONSTATUS__";
export declare const SELECTFIELDS = "__SELECTFIELDS__";
export declare const MENUDATASET = "__MENUDATASET__";
export declare const CONDITIONDATASET = "__CONDITIONDATASET__";
export declare const OPTIONDATASET = "__OPTIONDATASET__";
export declare const FILTERMENUDATASET = "__FILTERMENUDATASET__";
export declare const MENURESULT = "__MENURESULT__";
export declare const SEARCHTEXT = "__SEARCHTEXT__";
export declare const SELECTCHANGE = "__SELECTCHANGE__";
export declare const EXPTYPE = "__EXPTYPE__";
export declare const SEARCHEXP = "__SEARCHEXP__";
export declare const NEWFILTERDATASET = "__NEWFILTERDATASET__";
export declare const ORIGINALVALUEOBJ = "__ORIGINALVALUEOBJ__";
export default class TableDynamicFilterBar extends Component<TableDynamicFilterBarProps> {
    static get contextType(): typeof ConfigContext;
    static defaultProps: {
        queryFieldsLimit: number;
        autoQueryAfterReset: boolean;
        fuzzyQuery: boolean;
        fuzzyQueryOnly: boolean;
        autoQuery: boolean;
        refreshBtn: boolean;
        buttons: never[];
    };
    context: ConfigContextValue;
    get prefixCls(): string;
    get queryFields(): React.ReactElement<any>[];
    moreFields: Field[];
    /**
     * 控制添加筛选下拉显隐
     */
    fieldSelectHidden: boolean;
    /**
     * 收起/展开
     */
    expand: boolean;
    /**
   * 弹窗显隐
   */
    visible: boolean;
    shouldLocateData: boolean;
    showExpandIcon: boolean;
    refAdvancedFilterContainer: Popover | null;
    refDropdown: HTMLDivElement | null;
    refSingleWrapper: HTMLDivElement | null;
    refEditors: Map<string, any>;
    refFilterItems: Map<string, any>;
    refCustomizeExpTypeEditor: TextField | null;
    originalConditionFields: string[];
    tempFields: Fields;
    isTooltipShown?: boolean;
    constructor(props: any, context: any);
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentWillReceiveProps(nextProps: Readonly<TableDynamicFilterBarProps>): void;
    processDataSetListener(flag: boolean, nextProps?: TableDynamicFilterBarProps): void;
    handleMouseDownOut: (e: any) => void;
    handleDataSetQuery({ dataSet }: {
        dataSet: any;
    }): Promise<false | undefined>;
    /**
     * queryDataSet 查询前校验事件 触发展开动态字段
     * @param dataSet 查询DS
     * @param result
     */
    handleDataSetValidate({ dataSet, result }: {
        dataSet: any;
        result: any;
    }): Promise<void>;
    setConditionStatus(value: any, orglValue?: object): void;
    setOriginalConditionFields: (code: any) => void;
    /**
     * 筛选条件更新 触发表格查询
     */
    handleDataSetUpdate({ record, name, oldValue, value }: {
        record: any;
        name: any;
        oldValue: any;
        value: any;
    }): Promise<void>;
    /**
     * queryDS 新建，初始勾选值
     */
    handleDataSetCreate(): void;
    /**
     * queryDS reset，初始记录
     */
    handleDataSetReset(): void;
    /**
     * queryDS load，兼容项目loadData([])的处理，初始化记录
     */
    handleDataSetLoad({ dataSet }: {
        dataSet: any;
    }): void;
    /**
     * 初始化勾选值、条件字段
     * @param props
     */
    initConditionFields(props: any): void;
    /**
     * 高级搜索字段集
     */
    get advancedSearchFieldProps(): {
        help: string | undefined;
        name: string;
        type?: FieldType | undefined;
        order?: import("../../data-set/enum").SortOrder | undefined;
        label?: React.ReactNode;
        labelWidth?: string | undefined;
        format?: string | undefined;
        pattern?: string | RegExp | undefined;
        minLength?: number | undefined;
        maxLength?: number | undefined;
        step?: string | number | import("../../date-picker/DatePicker").TimeStep | undefined;
        nonStrictStep?: boolean | undefined;
        max?: import("moment").MomentInput;
        min?: import("moment").MomentInput;
        precision?: number | undefined;
        numberGrouping?: boolean | undefined;
        formatterOptions?: import("../../number-field/NumberField").FormatNumberFuncOptions | undefined;
        validator?: import("../../validator/Validator").CustomValidator | undefined;
        required?: boolean | undefined;
        readOnly?: boolean | undefined;
        disabled?: boolean | undefined;
        textField?: string | undefined;
        valueField?: string | undefined;
        idField?: string | undefined;
        parentField?: string | undefined;
        trueValue?: string | number | boolean | undefined;
        falseValue?: string | number | boolean | undefined;
        options?: string | DataSet | undefined;
        optionsProps?: DataSetProps | ((p: DataSetProps) => DataSetProps) | undefined;
        group?: number | boolean | undefined;
        defaultValue?: any;
        multiple?: string | boolean | undefined;
        multiLine?: boolean | undefined;
        range?: boolean | [string, string] | undefined;
        unique?: string | boolean | undefined;
        lovCode?: string | undefined;
        lovPara?: object | undefined;
        lookupCode?: string | undefined;
        lookupUrl?: string | ((code: string) => string) | undefined;
        lovDefineUrl?: string | ((code: string) => string) | undefined;
        lovQueryUrl?: string | ((code: string, config: import("../../../components-dataset/interface").LovConfig | undefined, props: import("../../data-set/Transport").TransportHookProps) => string) | undefined;
        lookupAxiosConfig?: import("axios").AxiosRequestConfig | ((props: {
            params?: any;
            dataSet?: DataSet | undefined;
            record?: Record | undefined;
            lookupCode?: string | undefined;
        }) => import("axios").AxiosRequestConfig) | undefined;
        lovDefineAxiosConfig?: import("axios").AxiosRequestConfig | ((code: string, field?: Field | undefined) => import("axios").AxiosRequestConfig) | undefined;
        lovDefineBatchAxiosConfig?: ((codes: string[]) => import("axios").AxiosRequestConfig) | undefined;
        lovQueryAxiosConfig?: import("axios").AxiosRequestConfig | ((code: string, lovConfig?: import("../../../components-dataset/interface").LovConfig | undefined) => import("axios").AxiosRequestConfig) | undefined;
        lookupBatchAxiosConfig?: ((codes: string[]) => import("axios").AxiosRequestConfig) | undefined;
        bind?: string | undefined;
        dynamicProps?: DynamicProps | ((props: import("../../data-set/Field").DynamicPropsArguments) => FieldProps | undefined) | undefined;
        computedProps?: DynamicProps | undefined;
        cascadeMap?: object | undefined;
        currency?: string | undefined;
        ignore?: FieldIgnore | undefined;
        transformRequest?: ((value: any, record: Record) => any) | undefined;
        transformResponse?: ((value: any, object: any) => any) | undefined;
        trim?: import("../../data-set/enum").FieldTrim | undefined;
        defaultValidationMessages?: import("../../validator/Validator").ValidationMessages | undefined;
        highlight?: string | number | boolean | {} | React.ReactElement<any, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)> | React.ReactNodeArray | React.ReactPortal | import("../../data-set/Field").HighlightProps | null | undefined;
        showCheckedStrategy?: import("../../data-set/enum").CheckedStrategy | undefined;
        bucketName?: string | undefined;
        bucketDirectory?: string | undefined;
        storageCode?: string | undefined;
        attachmentCount?: number | undefined;
        template?: import("../../../components-dataset/configure").AttachmentValue | undefined;
        fileKey?: string | undefined;
        fileSize?: number | undefined;
        useChunk?: boolean | undefined;
        chunkSize?: number | undefined;
        chunkThreads?: number | undefined;
        processValue?: ((value: any, range?: 0 | 1 | undefined) => any) | undefined;
        dateMode?: import("../../date-picker/enum").ViewMode | undefined;
        accept?: string[] | undefined;
        placeholder?: string | string[] | undefined;
    }[];
    /**
   * 加载动态筛选条相关初始数据 & 存储初始值
   *  1.筛选条
   *  2.高级搜索
   *  3.模糊搜索
   * @param param
   */
    loadConditionData({ conditionDataSet, newFilterDataSet, menuRecord, dataSet, searchText }: {
        conditionDataSet: any;
        newFilterDataSet: any;
        menuRecord: any;
        dataSet: any;
        searchText: any;
    }): void;
    /**
     * 初始筛选条数据源状态
     */
    initMenuDataSet(): Promise<boolean>;
    /**
     * tableFilterSuffix 预留自定义区域
     */
    renderSuffix(): (JSX.Element | null)[];
    getPrefix(): ReactNode;
    /**
     * 注入 refEditors
     * @param element
     * @param name
     */
    createFields(element: any, name: any): ReactElement;
    /**
     * 判断查询值是否为空
     * @param value
     */
    isEmpty(value: any): boolean;
    get tableFilterAdapter(): TransportProps | TableFilterAdapterProps | null | undefined;
    /**
     * 是否单行操作
     */
    isSingleLineOpt(): boolean;
    /**
     * 勾选
     * @param code
     * @param record
     */
    handleSelect: (code: any, record?: Record | undefined) => void;
    /**
     * 取消勾选
     * @param code
     */
    handleUnSelect: (code: any) => void;
    /**
     * 查询前修改提示及校验定位
     */
    modifiedCheckQuery(fuzzyValue?: string, fuzzyOldValue?: string, refresh?: boolean): Promise<void>;
    renderRefreshBtn(): ReactNode;
    /**
     * 渲染展开逻辑
     * @param hidden 是否隐藏全部
     */
    getExpandNode(hidden: any): ReactNode;
    /**
     * 过滤比较符
     * @param record
     * @param optionRecord
     * @returns
     */
    optionsFilter(record: any, optionRecord: any): boolean;
    /**
     * 高级筛选弹窗确认
     */
    handleFilterOk(): Promise<void>;
    /**
     * 高级筛选弹窗取消
     */
    handleFilterCancel(): void;
    setFilterVisiable(): void;
    isPopupChildren(element: HTMLElement | null): boolean;
    handleEmitFilterCancel(e: Event | KeyboardEvent): void;
    saveCustomizeExpTypeEditorRef(node: TextField | null): void;
    saveAdvancedFilterContainerRef(node: Popover | null): void;
    /**
     * 渲染高级筛选面板
     */
    getAdvancedFilter(): ReactNode;
    getCombineSort(): ReactNode;
    /**
     * 渲染模糊搜索
     */
    getFuzzyQuery(): ReactNode;
    /**
     * 渲染重置按钮
     */
    getResetButton(): JSX.Element;
    /**
     * 筛选头
     * fuzzyQuery + quickFilterMenu + resetButton + buttons
     */
    getFilterMenu(): ReactNode;
    /**
     * 查询字段初始顺序
     * 排除动态属性影响
     */
    get originOrderQueryFields(): Field[];
    /**
     * 获取模糊搜索字段参数名
     */
    get searchText(): string;
    handleHelpMouseEnter(e: MouseEvent, help: string): void;
    handleHelpMouseLeave(): void;
    renderTooltipHelp(help: any): JSX.Element | undefined;
    /**
     * 渲染查询项 label
     * @param param
     * @returns
     */
    getLabel({ field, value, record, placeholder }: {
        field: any;
        value: any;
        record: any;
        placeholder: any;
    }): any;
    /**
     * 渲染查询条
     */
    getQueryBar(): ReactNode;
    /**
     *
     * @param collapse
     * @param value 模糊查询参数
     */
    handleQuery(collapse?: boolean, value?: string, oldValue?: string): Promise<void>;
    render(): JSX.Element | ({} | undefined)[];
}
