import React, { Component, ReactElement, ReactNode } from 'react';
import DataSet from '../../data-set';
import TableContext from '../TableContext';
import { ElementProps } from '../../core/ViewComponent';
import { FormProps } from '../../form/Form';
import { TableQueryBarType } from '../../table/enum';
export interface TableProfessionalBarProps extends ElementProps {
    dataSet: DataSet;
    queryDataSet?: DataSet;
    queryFields: ReactElement<any>[];
    queryFieldsLimit?: number;
    queryFormProps?: FormProps;
    defaultExpanded?: boolean;
    onQuery?: (props: object) => void;
    onReset?: () => void;
}
export default class TableProfessionalBar extends Component<TableProfessionalBarProps> {
    static get contextType(): typeof TableContext;
    static defaultProps: {
        prefixCls: string;
        queryFieldsLimit: number;
    };
    static __TableQueryBarType: TableQueryBarType;
    moreFields: ReactElement[];
    componentDidMount(): void;
    componentWillUnmount(): void;
    processDataSetListener(flag: boolean): void;
    /**
     * queryDataSet 查询前校验事件 触发展开动态字段
     * @param dataSet 查询DS
     * @param result
     */
    handleDataSetValidate({ result }: {
        result: any;
    }): Promise<void>;
    handleFieldEnter(): void;
    handleQuery(collapse?: boolean): Promise<void>;
    openMore: (fields: React.ReactElement<any, string | ((props: any) => React.ReactElement<any, string | any | (new (props: any) => React.Component<any, any, any>)> | null) | (new (props: any) => React.Component<any, any, any>)>[]) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, string | any | (new (props: any) => React.Component<any, any, any>)> | null) | (new (props: any) => React.Component<any, any, any>)>[];
    getResetButton(): JSX.Element;
    getMoreFieldsButton(fields: any): JSX.Element | undefined;
    /**
     * 注入 onEnterDown 事件
     * @param elements
     */
    createFields(elements: any): ReactElement[];
    getQueryBar(): ReactNode;
    handleQueryReset(): void;
    render(): React.ReactNode;
}
